1、HashMap的put方法()原理
根据原理的大致流程图
例如我要插入如下代码
Map<String,String> map = new HashMap<>();
map.put("aa","110"); // 第一个元素
map.put("bb","120"); // 第二个元素
根据流程图,看过程
执行第一步:Map<String,String> map = new HashMap<>();
会执行HashMap的构造方法,构造扩容因子,此时,还没有去扩容
执行第二步:map.put(“aa”,“110”); // 第一个元素
这时会数组扩容,数组的默认为16,根据key进行Hash计算( (h = key.hashCode()) ^ (h >>> 16))得到数组索引,如果这个数组下标还没有值,则会直接插入到数组中
2、HashMap的扩容机制原理
JDK1.7
例如我们有这样的一个Map集合形式!
当我们多线程访问时,会出现以下情况,会形成闭环,
A线程执行完毕