stream 的reduce 和peek 介绍
时间: 2023-07-20 07:38:59 浏览: 85
`reduce` 和 `peek` 都是Java 8中Stream API中的方法。
`reduce` 方法是一个终止操作,用于将流中的元素归约为一个单独的值。它接受一个起始值和一个二元操作符,将起始值和流中的元素依次相结合,最终得到一个归约后的值。例如,可以使用 `reduce` 方法求一个整型列表中所有元素的和:
```java
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int sum = list.stream().reduce(0, Integer::sum);
```
上述代码中,`reduce` 方法接受一个起始值0和一个二元操作符`Integer::sum`,将0和流中的元素依次相加,最终得到整个列表的和。
`peek` 方法是一个中间操作,用于在流的处理过程中查看流中的元素。它接受一个Consumer类型的参数,对每一个元素执行该Consumer中的操作,然后将元素传递给下一个操作。例如,可以使用 `peek` 方法打印一个整型列表中的所有元素:
```java
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream().peek(System.out::println).count();
```
上述代码中,`peek` 方法接受一个打印操作的Consumer,对每一个元素执行该操作,然后将元素传递给下一个操作。最终使用 `count` 方法统计元素个数,这里只是为了触发流的处理,因为 `peek` 方法不会改变流中的元素。
阅读全文