Java Stream Filter过滤器
简介
Java 8引入了Stream API,它提供了一种处理集合元素的函数式编程方式。Stream API中的filter方法是一种常用的操作,它可以根据指定的条件过滤出符合要求的元素。本文将介绍Java Stream中的filter方法的使用以及一些常见的用法示例。
Stream Filter方法
Stream接口中的filter方法是用于过滤集合元素的方法。它接受一个Predicate接口的实现作为参数,用于判断元素是否满足条件。filter方法返回一个新的Stream流,其中包含满足条件的元素。
filter方法的定义如下:
Stream<T> filter(Predicate<? super T> predicate)
其中,T是流中元素的类型,predicate是一个用于判断元素是否满足条件的函数接口。
用法示例
下面是一些Java Stream filter方法的用法示例:
示例1:过滤出大于10的元素
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 10, 15, 20);
List<Integer> result = numbers.stream()
.filter(num -> num > 10)
.collect(Collectors.toList());
System.out.println(result); // 输出:[15, 20]
在上面的示例中,我们首先创建了一个包含整数的列表numbers。然后,我们使用stream方法将列表转换为一个流。接下来,我们使用filter方法过滤出大于10的元素。最后,使用collect方法将过滤后的元素收集到一个新的列表中。
示例2:过滤出字符串长度大于5的元素
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eve");
List<String> result = names.stream()
.filter(name -> name.length() > 5)
.collect(Collectors.toList());
System.out.println(result); // 输出:[Charlie]
在这个示例中,我们创建了一个包含字符串的列表names。然后,使用stream方法将列表转换为一个流。接着,通过filter方法过滤出字符串长度大于5的元素。最后,使用collect方法将过滤后的元素收集到一个新的列表中。
示例3:过滤出包含特定字符串的元素
List<String> fruits = Arrays.asList("apple", "banana", "orange", "kiwi", "mango");
String keyword = "an";
List<String> result = fruits.stream()
.filter(fruit -> fruit.contains(keyword))
.collect(Collectors.toList());
System.out.println(result); // 输出:[banana, mango]
在这个示例中,我们创建了一个包含水果名称的列表fruits。然后,使用stream方法将列表转换为一个流。通过filter方法,我们过滤出包含特定字符串"an"的水果名称。最后,使用collect方法将过滤后的元素收集到一个新的列表中。
总结
Java Stream的filter方法是一种常用的操作,它可以根据指定的条件过滤出满足要求的元素。通过filter方法,我们可以更加灵活地处理集合中的元素,简化代码的编写。希望本文对你理解Java Stream的filter方法有所帮助。
以上就是关于Java Stream中filter过滤器的科普介绍,希望对你有所帮助!