【发布时间】:2014-04-29 21:48:33
【问题描述】:
您什么时候使用collect() 和reduce()?有没有人有好的、具体的例子说明什么时候选择一种方式肯定更好?
Javadoc mentions that collect() is a mutable reduction.
鉴于这是一个可变的缩减,我认为它需要同步(内部),而这反过来又会损害性能。大概reduce() 更容易并行化,代价是必须在reduce 的每一步之后创建一个新的数据结构以返回。
不过,以上陈述都是猜测,我希望专家能在此插话。
【问题讨论】:
-
您链接到的页面的其余部分对此进行了解释:与 reduce() 一样,以这种抽象方式表达 collect 的一个好处是它直接适合并行化:我们可以累积部分将结果并行然后合并,只要累加和合并函数满足相应的要求即可。
-
另见 Angelika Langer 的“Java 8 中的流:减少与收集” - youtube.com/watch?v=oWlWEKNM5Aw
标签: java java-8 java-stream