【发布时间】:2018-03-05 06:40:08
【问题描述】:
final Stream<Integer> numbers = Stream.of(5, 3, 2, 7, 3, 13, 7).parallel();
为什么下面一行的输出是7?
numbers.reduce(1, (a, b) -> a + b, (x, y) -> x - y));
【问题讨论】:
-
您违反了
reduce的合同,因为1不是您的累加器/组合器的身份。 See javadoc -
为什么不是身份?请参阅此代码 - concretepage.com/java/jdk-8/java-8-stream-reduce-example (ReduceDemo3)
-
该链接也存在一些问题,因为它违反了某些属性;请阅读文档而不是那个
-
任何人都可以设置网页。而且有很多,除了official tutorial 或API documentation 之外,没有告诉你更多。但是您链接的那个页面是最糟糕的页面之一,只是大错特错。也许this Q&A 有帮助……
标签: java-8 java-stream reduce