Reduce Java

2025年5月6日 | 阅读4分钟

Java中,缩减(reduce)是一种将流聚合为某个类型或基本类型(primitive type)的终止操作。Java 8 提供的Stream API 包含一组预定义的缩减操作,如 average()、sum()、min()、max() 和 count()。这些操作通过组合流中的元素来返回值。在 Java 中,reduce()Stream接口的一个方法。在本节中,我们将详细讨论 Java Stream.reduce() 方法。

它是用于组合所有元素的方法。对于流中的每个元素,reduce() 方法都会应用一个二元运算符(binary operator)。在该流中,运算符的第一个参数必须返回先前应用的返回值,第二个参数必须返回当前流元素。

它允许我们通过重复地将组合操作应用于序列中的元素来从一个元素序列中产生一个单一的结果,这称为缩减

Stream.reduce() 方法有以下三种变体:

1. reduce(BinaryOperator<T> accumulator)

它会对该流的元素执行规约,使用一个关联的累积函数,并在元素存在的情况下返回一个描述规约值的 Optional。

2. reduce(Tidentity, BinaryOperator<T> accumulator)

使用提供的初始值(identity)和一个关联的累积函数,对该流的元素执行规约,并返回规约值。

3. reduce(U identity, BiFunction<U,?super T,U> accumulator, BinaryOperator<U> combiner)

使用提供的初始值、累积函数和组合函数,对该流的元素执行规约。

在上述方法中,使用了三个元素作为参数:

  • T: 数据类型。
  • identity: 定义了缩减操作的初始值。
  • accumulator: 是一个函数,用于组合两个值,即缩减操作的部分结果和流的下一个元素。
  • combiner: 它用于组合缩减操作的部分结果。

让我们来看一些操作示例,以理解 Stream 类的 reduce() 方法。

Java Stream.reduce() 示例

ReduceExample1.java

输出

Reduce Java

ReduceExample2.java

输出

Reduce Java

ReduceExample3.java

输出

Reduce Java

ReduceExample4.java

输出

Reduce Java

ReduceExample5.java

输出

Reduce Java