Java的hashSet处理具有相同哈希码的多项

时间:2018-05-06 20:26:16

标签: java hashset hashcode

我无法在任何地方找到这个问题的答案。 我使用相同的哈希代码将100,000个不同的字符串添加到java中的HashSet中,花了63毫秒。 (链接列表花了37373毫秒)

我想知道Java的hashSet如何处理这种情况。

(这是练习的一部分,我的实现花费的时间更长 - " Open"实现 - 将字符串添加到Linked列表,ans" Closed"实现 - 我在哪里找到具有给定公式的下一个开放单元格。

1 个答案:

答案 0 :(得分:1)

在OpenJDK HashMaps&如果by-hash桶中有许多项目,则HashSets回退到TreeMap / TreeSet:

http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/util/HashMap.java#l145

也不要与LinkedList比较,而是与ArrayList相比 - LinkedList更慢,几乎从不使用/有用。