.reduce
时间: 2025-03-17 14:17:48 浏览: 29
`reduce` 是 Java Stream API 中的一个终端操作方法,它能够将流中的元素组合起来,并最终生成单一的结果。这个过程通常被称为归约或折叠。
### 使用场景
当我们需要从一组数据中得出某种汇总信息的时候,“减少”功能就显得特别有用处啦! 比方说计算总和、寻找最大最小值等都是它的典型应用场景。
例如下面的例子展示了如何用 reduce 来求得一系列整数之和:
```java
Integer sum = Arrays.asList(1, 2, 3, 4)
.stream()
.reduce(0, (a, b) -> a + b);
System.out.println(sum); // 输出: 10
```
这里我们首先创建了一个包含四个数字的小表单 [1, 2, 3, 4], 然后把它变成了一道水流(stream), 再通过调用 `reduce` 方法设置初始累加量为零 `(identity=0)` 并且规定了两两相加之法则 `{return a+b;}` , 结果便是所有数值合计在一起得到最后的答案 - 即这串正数列首项到末项的简单算术级数公式 S_n=n*(n+1)/2 对应于此例的情况也就是 Sn=10 .
另外需要注意的一点是 Reduce 可能返回 Optional<T>, 这取决于是否提供了 identity 值以及 流里面是否有元素.
如果既定有 start value 则不会获得 optional 包裹的形式.
#### 更复杂一点的应用案例如下所示:
假如我们现在不仅仅满足于做基本数学运算还要处理字符串连接之类的任务也可以轻松搞定~
```java
String concatenated = Stream.of("A", "B", "C")
.reduce("", String::concat);
//结果将是 “ABC”
```
上面演示的是采用静态引用方式指明我们的累积逻辑为普通的字符串拼接动作而已.
阅读全文
相关推荐


















