java中stream流中的filter
时间: 2023-10-24 12:26:54 浏览: 88
stream流中的filter是一个中间操作,用于根据指定的条件筛选出stream中符合条件的元素。它的语法如下:
```java
Stream<T> filter(Predicate<? super T> predicate)
```
其中,predicate是一个函数式接口,用于定义筛选条件。对于stream中的每个元素,都会调用predicate接口的test方法来判断是否满足条件。如果满足条件,则保留该元素;如果不满足条件,则过滤掉该元素。
例如,我们有一个整数的stream,我们可以使用filter来筛选出大于10的元素:
```java
List<Integer> numbers = Arrays.asList(5, 10, 15, 20, 25);
List<Integer> filteredNumbers = numbers.stream()
.filter(num -> num > 10)
.collect(Collectors.toList());
System.out.println(filteredNumbers); // 输出:[15, 20, 25]
```
在上面的例子中,filter方法传入了一个lambda表达式num -> num > 10作为筛选条件,保留大于10的元素。最后使用collect方法将筛选后的结果收集到一个新的List中。
filter操作是一个惰性求值操作,只有在终止操作(如collect、forEach等)被调用时才会执行筛选操作。
阅读全文