.stream.filter.filter什么意思
时间: 2024-09-11 09:17:36 浏览: 53
asp.net 使用Response.Filter 过滤非法词汇
在Java Stream API中,`.stream().filter(filter).filter(filter)`连续调用两次`filter`方法是用来对流进行过滤操作的。这里的第一个`filter(predicate)`接受一个谓词(Predicate),用于筛选出满足条件的元素。然后,第二次的`filter`也是同样的过程,它会对前一次过滤后的结果再次应用另一个谓词,进一步筛选数据。
例如:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream()
.filter(n -> n > 2) // 过滤掉不大于2的数
.filter(n -> n % 2 == 0) // 再次过滤掉奇数
.forEach(System.out::println); // 输出偶数:4, 6
```
这里首先保留大于2的数,然后再保留能被2整除的数。如果不希望连续调用两次,可以将第二个`filter`替换为一个单独的`filter`,并将两个谓词组合成一个复合谓词:
```java
numbers.stream()
.filter(n -> n > 2 && n % 2 == 0)
.forEach(System.out::println);
```
阅读全文