当前位置:  开发笔记 > 编程语言 > 正文

使用distinct()和collect(toSet())是否值得

如何解决《使用distinct()和collect(toSet())是否值得》经验,为你挑选了1个好方法。

将流的元素收集到集合中时,是否还有.distinct()在流上指定的优点(或缺点)?例如:

return items.stream().map(...).distinct().collect(toSet());

鉴于该集合已经删除了重复项,这似乎是多余的,但它是否提供任何性能优势或劣势?答案取决于流是并行/顺序还是有序/无序?



1> Steve Chalon..:

根据javadoc,distinct是一个有状态的中间操作.

如果你真的已经.distinct紧随其后.collect,它并没有真正增加任何好处.也许如果.distinct实现比Set复制检查更高效,你可能会获得一些好处,但是如果你收集到一个集合,你最终会得到相同的结果.

另一方面,如果在操作.distinct之前发生.map,并且特定映射是一项昂贵的操作,那么您可能会获得一些收益,因为您整体上处理的数据较少.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有