讲讲hashmap hashset的扩容
时间: 2023-05-23 19:06:29 浏览: 89
当哈希表的负载因子(元素个数/哈希表容量)达到一定阈值时,为了避免哈希冲突增加,需要对哈希表进行扩容。HashMap和HashSet使用的是同样的方式进行扩容。
正确设置扩容因子是哈希表性能的关键,过大过小都会导致性能下降。一般来说,扩容因子为0.75是比较合适的。
扩容的过程大致如下:
1. 创建一个新的哈希表,大小为当前哈希表的两倍。
2. 遍历旧哈希表中的所有元素,将它们重新插入到新哈希表中。
3. 释放旧哈希表的内存空间。
在具体实现上,新增元素可能触发扩容,当HashMap(或者HashSet)中键值对总数超过容量与负载因子的乘积时,就会进行扩容。
具体的实现方法需要注意几个细节:扩容后,新的更新元素可能放在新数组的后面,因此需要递归更新;同时,扩容后,原数组不再存在,原数组中未被重载的对象也需要复制到新数组中。
阅读全文