提问者:小点点

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


我在hashmap或hashtable中经历了重新散列过程,这解释了HashMap重新散列的美丽概念。我有一个关于它的问题。

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


共1个答案

匿名用户

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

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

其中阈值为(容量*负载因子),缓存在速度字段中(避免浮点运算)。

HashMap通过将存储桶从链表转换为平衡树来处理过多的存储桶。