首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Collectors.toSet()和HashSet

Collectors.toSet()和HashSet
EN

Stack Overflow用户
提问于 2015-05-06 16:33:28
回答 1查看 55.8K关注 0票数 103

取下面的示例代码行:

代码语言:javascript
复制
Set<String> someSet = someColletion.stream().map(p -> p.toString()).collect(Collectors.toSet());

我想要一个HashSet。作为代码的调试器,我确实得到了一个HashSet。我查看了java.util.stream.Collectors.toSet()以观察以下代码:

代码语言:javascript
复制
public static <T> Collector<T, ?, Set<T>> toSet() {
    return new CollectorImpl<>((Supplier<Set<T>>) HashSet::new, Set::add,
                               (left, right) -> { left.addAll(right); return left; },
                               CH_UNORDERED_ID);
}

契约保证一个Set,而实现决定了一个HashSet;似乎是合理的。但是,我的实现需要由HashSet保证的固定时间查找,而不是任何旧的Set。如果toSet()的实现决定使用一个完全在其权限内的FooSet,那么我的实现就会受到损害。

这个问题的最佳实践解决方案是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-06 16:35:43

如果您想要一个有保证的HashSet,请使用Collectors.toCollection(HashSet::new)

票数 174
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30082555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档