我在hashmap或hashtable中经历了重新散列过程,这解释了HashMap重新散列的美丽概念。我有一个关于它的问题。
考虑HashMap的初始容量为16,负载因子为0.75的情况。现在,12个元素被添加到HashMap中,但由于hashCode
实现不佳,它们最终都在同一个桶中。其他15个桶不包含任何元素。HashMap会重新散列吗?
实际上,至少在当前的HashMap实现中,冲突不会影响重新散列。例如,请参阅HashMap. putVal
末尾的第661-662行,它只是检查
if (++size > threshold)
resize();
其中阈值为(容量*负载因子),缓存在速度字段中(避免浮点运算)。
HashMap通过将存储桶从链表转换为平衡树来处理过多的存储桶。