jdk8 reduce

reduce 有3个重载方法

1.接收一个参数 BinaryOperator 的函数式接口 ,返回 Optional 对象

Optional<T> reduce(BinaryOperator<T> accumulator);

BinaryOperator 是函数式接口,需要实现方法

R apply(T t, U u);

2.接收两个参数

T reduce(T identity, BinaryOperator<T> accumulator);

此处多了一个参数 identity ,jkd8 有并行 stream 即 parallStream ,如果使用 strean ,那么指定 identity 将参与结果计算。但是如果使用 parallStream ,计算结果将不一样  

identity必须是accumulator函数的一个identity,也就是说必须满足:对于所有的t,都必须满足 accumulator.apply(identity, t) == t

3.接收三个参数

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

第一个参数是返回值类型,第二个参数是计算器,第三个参数是组合器。

第三个参数的作用是将 并行stream 的线程结果进行合并,并得到最终的结果

posted @ 2020-08-14 19:58  byebai95  阅读(488)  评论(0编辑  收藏  举报