HashMap 插入数据JDK1.7之前是从头部插入,JDK1.8及之后是从尾部插入的,在出现Hash相同时JDK1.7是单链表存储的,1.8及之后在同一个Hash处超过8个会使用红黑树存储,所以会从尾部插入数据。
jdk1.8及之后的插入代码
if ((e = p.next) == null) {//当前对象的next为空时添加(添加到尾部)
p.next = newNode(hash, key, value, null);
//转化成红黑树
if (binCount >= TREEIFY_THRESHOLD - 1) // -1 for 1st
treeifyBin(tab, hash);
break;
}
红黑树有关的知识 YSOcean的:https://www.cnblogs.com/ysocean/p/8004211.html
其他的请自行百度。