我试了下面两组代码,结果没有任何差别。我也试着去执行这两个 reduce(T identity, BinaryOperator<T> accumulator)
以及 reduce(BinaryOperator<T> accumulator)
当累加器函数是按位或时,无法注意到任何差异。
long result1 = myList.stream.reduce((a,b) -> a|b).orElse(0L);
long result2 = myList.stream.reduce(0L,(a,b) -> a|b);
是否有任何角落的情况,这将导致不同的结果或是一个比另一个更好的方式?
1条答案
按热度按时间23c0lvtd1#
结果没有差别。
不过,我会解开盒子
Stream<Long>
元素转换为LongStream
,因此累加器不需要自动装箱结果。有了这个,我就用第二个选项。