Java 的 ConcurrentHashMap 中的哈希冲突:必须采取哪些预防措施?

Hash collisions in Java's ConcurrentHashMap: which precautions must be taken?

我在理解 Java 的 ConcurrentHashMap 如何处理散列(或者更确切地说:散列冲突)时遇到一些问题。

例如,当我 运行 每个人时:

"Ea".hashCode()
"FB".hashCode()

...我两次收到相同的整数:2236

现在,如果我使用这些字符串中的每一个作为 ConcurrentHashMap 实例中的键,似乎没有问题。

ConcurrentHashMap<String, Object> testMap = new ConcurrentHashMap<>();
testMap.put("Ea", Math.random());
System.out.println(testMap.containsKey("FB"));

最后一行 returns false,尽管映射中已经存在具有相同哈希码值 ("Ea") 的键。

这是如何工作的,更重要的是:我需要采取什么预防措施来防止我的 ConcurrentHashMap 实例中的哈希冲突?

Javas ConcurrentHashMap 使用哈希表作为底层数据结构来存储条目。 table 处理冲突的方式描述如下: How do HashTables deal with collisions?

在使用标准库的HashMap 和ConcurrentHashMap 类型时,一般不需要担心哈希冲突。这些保证不会导致具有相同哈希值的键出现问题。