当Java的HashMap重新散列时,哈希码的分布如何影响?

时间:2015-12-13 05:27:10

标签: java hashmap

我正在经历Rehashing process in hashmap or hashtable 这解释了美丽的概念 HashMap重组。 我有一个问题。

考虑HashMap的初始容量为16且负载因子为0.75的情况。现在,有12个元素被添加到HashMap中,但由于hashCode实现不佳,它们最终都在同一个桶中。其他15个桶不包含任何元素。 HashMap会重新出现吗?

1 个答案:

答案 0 :(得分:1)

实际上,至少在HashMap的当前实现中,冲突不会影响重新散列。例如,请参阅HashMap.putVal末尾的lines 661-662,只需检查

即可
if (++size > threshold)
    resize();

其中threshold is (capacity * load factor),缓存在字段中以提高速度(避免浮点运算)。

HashMap处理过多的存储桶by converting the buckets from linked lists to balanced trees