gpt4 book ai didi

java - Collectors.toSet() 和 HashSet

转载 作者:IT老高 更新时间:2023-10-28 20:21:22 28 4
gpt4 key购买 nike

取下面一行示例代码:

Set<String> someSet = someColletion.stream().map(p -> p.toString()).collect(Collectors.toSet());

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

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,这是完全在其权利范围内的,那么我的实现就会受到影响。

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

最佳答案

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

关于java - Collectors.toSet() 和 HashSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30082555/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com