java里stream流过滤
时间: 2024-12-26 09:17:39 浏览: 3
### Java Stream API 过滤元素 示例教程
#### 创建示例数据集
为了演示过滤操作,先创建一个包含整数的 `List` 集合:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
```
此列表包含了从 1 到 10 的整数值[^4]。
#### 基本过滤操作
通过调用 `stream()` 方法可以将集合转换为流对象。接着使用 `filter()` 方法传入谓词表达式作为参数来进行筛选工作。下面的例子展示了如何保留偶数项:
```java
numbers.stream()
.filter(n -> n % 2 == 0)
.forEach(System.out::println);
```
这段代码会打印出所有的偶数:2、4、6、8 和 10。这里使用的 lambda 表达式定义了一个简单的逻辑测试——判断数字是否能被 2 整除[^1]。
#### 复杂条件下的过滤
除了简单的一元运算符外,还可以组合多个条件实现更复杂的查询需求。比如只选取大于等于 5 并且小于等于 8 的奇数:
```java
numbers.stream()
.filter(n -> n >= 5 && n <= 8 && n % 2 != 0)
.forEach(System.out::println);
```
这将会输出两个符合条件的结果:5 和 7。
#### 结合其他操作
值得注意的是,在实际项目里通常不会单独执行一次性的过滤动作;相反地,经常与其他中间或终端操作相结合形成完整的流水线处理流程。例如收集结果到新的集合中去:
```java
List<Integer> filteredNumbers = numbers.stream()
.filter(n -> n > 5)
.collect(Collectors.toList());
System.out.println(filteredNumbers); // 输出 [6, 7, 8, 9, 10]
```
上述例子说明了怎样把经过过滤后的元素重新组装回一个新的列表实例。
阅读全文