HashMap是怎么扩容的?
时间: 2024-05-20 13:17:50 浏览: 72
ArrayList集合与HashMap的扩容原来.docx
HashMap在存储元素时会根据负载因子(load factor)来判断是否需要进行扩容。当HashMap中的元素数量超过了容量与负载因子的乘积(即超过了扩容阈值),就会触发扩容操作。
扩容操作会新建一个容量更大的数组,将原来的元素重新计算hash值,然后重新分配到新的数组中。具体步骤如下:
1. 创建一个新的数组,长度为原数组的两倍。
2. 遍历原数组,将每个元素重新计算hash值,然后插入到新数组中。
3. 将HashMap的table指向新的数组,原来的数组被垃圾回收。
由于重新计算hash值和重新分配元素需要消耗一定的时间,因此HashMap在扩容时会造成一定的性能损失。为了减小扩容带来的影响,可以适当调整HashMap的初始容量和负载因子。
阅读全文