小编典典
您在说这个功能吗?
reduce U reduce(U identity,
BiFunction accumulator,
BinaryOperator combiner)
使用提供的标识,累积和组合功能,对此流的元素进行简化。这等效于:
U result = identity;
for (T element : this stream)
result = accumulator.apply(result, element)
return result;
```
但不限于顺序执行。身份值必须是组合器功能的身份。这意味着对于所有u,combiner(identity,u)等于u。此外,组合器功能必须与累加器功能兼容;对于所有u和t,必须满足以下条件:
>
combiner.apply(u, accumulator.apply(identity, t)) ==
accumulator.apply(u, t)
```
这是终端操作。
API注意:通过使用map和reduce操作的显式组合,可以更简单地表示使用这种形式的许多归约。累加器功能充当映射器和累加器的融合,有时比单独的映射和归约方法更有效,例如,当知道先前的降低值可以避免进行某些计算时。类型参数:U-结果的类型参数:identity-组合器函数累加器的标识值-关联,无干扰,无状态的功能,用于将附加元素合并到结果组合器中-关联,无干扰,无状态用于合并两个值的函数,这些值必须与累加器函数兼容返回:约简的结果另请参见:reduce(BinaryOperator),reduce(Object,BinaryOperator)
我以为它的目的是允许并行计算,所以我的猜测是只有在并行执行归约时才使用它。如果按顺序执行,则无需使用combiner。我不确定这一点-我只是基于文档注释“ […]不受顺序执行约束”以及注释中许多其他有关“并行执行”的说法。
2020-10-21