stream的filter的全部用法
时间: 2024-08-13 09:09:19 浏览: 108
Java8- Stream API的用法.pdf
Stream API 在Java中是一个强大的工具,用于处理集合数据流(无限或有限)的操作。`filter()` 方法是其中的一个核心操作之一,它的主要作用是从给定的数据流中筛选出满足特定条件的元素。
**filter() 的用法:**
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
// 使用 lambda 表达式定义过滤规则
Stream<Integer> filteredStream = numbers.stream()
.filter(conditionFunction); // conditionFunction 是一个谓词(Predicate)
// 条件函数示例:
Predicate<Integer> isEven = n -> n % 2 == 0; // 筛选偶数
filteredStream = numbers.stream().filter(isEven);
// 或者使用方法引用
filteredStream = numbers.stream().filterToInt(n -> n > 3);
// 过滤后可进一步操作,如 map(), collect() 等
List<Integer> evenNumbers = filteredStream.collect(Collectors.toList());
```
- `conditionFunction`: 这是一个函数接口 `Predicate<T>`,用于指定过滤条件。当该函数返回 `true` 时,stream 中的元素会被保留;反之则被丢弃。
- 可以使用 lambda 表达式或方法引用来创建 `Predicate` 实例。
- `filterToInt()` 和 `filterToLong()` 分别返回一个新的 IntStream 或 LongStream,适合对数值进行计数、求和等操作。
- `filter()` 返回一个新的 Stream 对象,原始 stream 不会改变,直到调用 `forEach()` 或其他消费操作才会执行实际过滤。
阅读全文