hashmap 是怎么扩容的
时间: 2024-01-15 17:33:39 浏览: 66
ArrayList集合与HashMap的扩容原来.docx
HashMap 在初始化时会创建一个指定容量大小的哈希表,当存储的键值对数量超过了负载因子(默认为 0.75)与当前容量的乘积时,就会触发扩容操作。
具体扩容过程如下:
1.创建一个新的哈希表,容量为原来的两倍。
2.遍历原哈希表中的每个 Entry 对象,将它们重新分配到新的哈希表中。
3.重新分配时,会根据每个 Entry 对象的 key 值重新计算哈希值,并将它们放到新的哈希表的对应位置上。如果新位置上已经有其他 Entry 对象,则将它们组织成一个链表。
4.最后,将原哈希表指向新的哈希表,完成扩容操作。
需要注意的是,扩容操作会比较耗时,因为需要将原哈希表中的所有 Entry 对象重新分配到新的哈希表中。因此,在创建 HashMap 时,尽量预估需要存储的键值对数量,并设置合适的初始容量,避免频繁扩容。
阅读全文