Java 8 Stream – Reduce函数的组合器未执行

我使用一个简单的reduce方法,有三个参数即。 身份,累加器和组合器。 这是我的代码……

Integer ageSumComb = persons .stream() .reduce(0, (sum, p) -> { System.out.println("Accumulator: Sum= "+ sum + " Person= " + p); return sum += p.age; }, (sum1, sum2) -> { System.out.format("Combiner: Sum1= " + sum1 + " Sum2= "+ sum2); return sum1 + sum2; 

但正在发生的事情是Combiner没有被执行。 我没有得到这背后的原因。 这是我的输出..

 Accumulator: Sum= 0 Person= Max Accumulator: Sum= 18 Person= Peter Accumulator: Sum= 41 Person= Pamela Accumulator: Sum= 64 Person= David Accumulator: Sum= 76 Person= Pam 

但是,没有编译错误,也没有exception,我的输出完全正确,与我的预期相同。 但是没有得到为什么组合器没有执行。

组合器仅针对并行流执行。

如果要使用组合器,则需要使用parallelStream而不是stream

Interesting Posts