在 HashMap 中,当存储的键值对数量超过了负载因子乘以哈希表容量的阈值,即达到了扩容的条件,就会触发数组的扩容操作。具体的数组扩容过程如下:
创建一个新的大小为原始容量的两倍的数组,称为新表(new table)。
遍历原始表(old table)中的每个桶。
将原始表中每个非空桶中的键值对重新计算哈希值,并根据新表的长度找到新的位置,将键值对插入到新表的对应桶中。
如果原始表中的桶包含链表或树,则在新表中也使用相同的数据结构进行存储。
扩容完成后,新表取代原始表成为 HashMap 的内部存储结构。
通过扩容操作,HashMap 可以保持较低的填充因子,减少哈希冲突的概率,提高插入和查找的性能。
网友评论