有一定经验的开发者都知道,HashMap是非线程安全的。
在高并发环境下,HashMap可能出现致命问题。
一、Rehash是HashMap在扩容时候的一个步骤
HashMap的【容量】是有限的,当经过多次元素插入,使得HashMap达到一定饱和度时,Key映射index位置发生冲突的几率会逐渐提高。
这时候,HashMap需要扩展它的长度(扩容),也就是进行Resize。
二、影响发生Resize的因素
1、Capcity(容量):HashMap的当前长度,HashMap的长度是【2的幂】
2、LoadFactor(负载因子): HashMap的负载因子默认为0.75f
三、衡量HashMap是否进行Resize的条件
HashMap.size >= Capcity *LoadFactor
四、HashMap扩容(Resize)
HashMap的Resize不是简单的把长度扩大,而是经过2个步骤:
1、扩容:创建一个新的Entry空数组,长度是原数组的2倍
2、ReHash:遍历原Entry数组,把所有