将流的元素收集到集合中时,在流上指定 .distinct()
是否有任何优点(或缺点)?例如:
return items.stream().map(...).distinct().collect(toSet());
鉴于该集合已经删除了重复项,这似乎是多余的,但它是否提供了任何性能优势或劣势?答案是否取决于流是并行/顺序还是有序/无序?
最佳答案
根据javadoc , distinct
是一个有状态的中间操作。
如果您确实有 .distinct
紧跟 .collect
,它实际上并没有增加任何好处。也许如果 .distinct
实现比 Set
重复检查更高效,你可能会得到一些好处,但如果你收集到一个集合,你将结束无论如何都会得到相同的结果。
另一方面,如果 .distinct
发生在您的 .map
操作之前,并且该特定映射是一项昂贵的操作,您可能会在那里获得一些 yield ,因为您'总体上处理的数据较少。
关于java - 是否值得将 distinct() 与 collect(toSet()) 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41593538/