stream流中filter过滤
时间: 2023-09-24 18:09:51 浏览: 151
stream流中的filter()方法用于对流中的元素进行过滤操作。它接受一个Predicate函数式接口作为参数,该接口定义了一个用于判断元素是否满足条件的test()方法。
在调用filter()方法时,流中的每个元素会依次传入Predicate的test()方法中,如果test()方法返回true,表示该元素满足条件,会被保留在流中;如果返回false,表示该元素不满足条件,会被过滤掉。
下面是一个示例代码,演示了如何使用filter()方法对一个整数流进行过滤,只保留偶数:
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> evenNumbers = numbers.stream()
.filter(num -> num % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers); // 输出[2, 4, 6, 8, 10]
```
在上述代码中,我们首先创建了一个整数列表numbers。然后,通过调用stream()方法将其转换为流。接着,使用filter()方法传入一个Lambda表达式`num -> num % 2 == 0`作为条件,筛选出偶数。最后,使用collect()方法将过滤后的结果收集到一个新的列表中,并输出结果。
通过使用filter()方法,我们可以根据自己的需求对流中的元素进行灵活的过滤操作。
阅读全文