今天碰到了java8种的reduce方法,查了资料之后写一些总结,以免自己以后用到。
计算1,2,3,4,5 的和,并且初始值为3
也就是计算3+1+2+3+4+5
1.使用Stream 两个参数的reduce方法进行归约运算
2.使用for循环迭代调用BinaryOperator 的apply进行运算

结果重新作为一个参数,不断地参与到运算之中,直到最后结束
理解reduce的含义重点就在于理解"累 加 器" 的概念

Stream的一个参数和两个参数的方法的基本逻辑都是如此
差别仅仅在于一个参数的是result R = T1 ,然后再继续与剩下的元素参与运算
三个参数的reduce
U reduce(U identity,
BiFunction<U, ? super T, U> accumulator,
BinaryOperator combiner);
与两个参数的reduce不同的地方在于类型
双参数的返回类型为T Stream类型为T
三参数的返回类型为U Stream类型为T 有了更大的发挥空间 T可能为U 也可能不是U
很显然,三参数的reduce 方法的思维方式同双参数的并无二致
所以问题来了,那还要第三个参数做什么?
其实第三个参数用于在并行计算下 合并各个线程的计算结果

本文介绍了Java 8中reduce方法的使用,包括如何结合lambda表达式进行归约运算,以及单参数、双参数和三参数reduce方法的区别。通过示例展示了如何利用`::`关键字访问类的方法,以及lambda表达式的不同用法。
最低0.47元/天 解锁文章
1213

被折叠的 条评论
为什么被折叠?



