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



我在理解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"));

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

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

Javas ConcurrentHashMap使用HashTable作为存储条目的底层数据结构。此表处理冲突的方式如下所述:哈希表如何处理冲突?

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

最新更新