stream把某一字段相加 reduce
时间: 2024-09-24 10:19:16 浏览: 68
Java 8系列之Stream中万能的reduce用法说明
Stream API 是 Java 8 引入的一种强大的数据处理机制,它允许我们在集合上执行并行或非并行的操作,而无需显式地创建新的集合。`reduce()` 方法是 Stream API 中用于聚合元素的一个重要函数,它的作用是将所有流元素应用到一个累加器值上,最终得到单个结果。
当你需要对某个字段(通常是数字类型)进行求和、最大值、最小值或其他累积操作时,可以使用 `reduce()`。这个方法接受一个初始值(累加器),以及一个二元操作函数作为参数。这个函数会在每次迭代时接收当前累加器值和流中的下一个元素,并返回一个新的累加器值。当遍历完整个流后,最后一次操作的结果就是 `reduce()` 的返回值。
例如,如果你想计算一个整数列表中所有数值的总和,你可以这样做:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
.mapToInt(Integer::intValue) // 如果元素不是Integer可以直接省略这一步
.reduce(0, Integer::sum); // 使用Integer::sum作为累加操作
```
在这里,`0` 是初始值,`Integer::sum` 是一个二元操作,它将两个整数相加。`mapToInt()` 可能会用到,如果原始流包含的是非整数类型的元素,你需要先将其转换为整数。
阅读全文