JDK1.7以前的HashMap jdk1.7中,当冲突时,在冲突的地址上生成一个链表,将冲突的元素的key,通过equals进行比较,相同即覆盖,不同则添加到链表上,此时如果链表过长,效率就会大大降低,查找和添加操作的时间复杂度都为O(n):但是在jdk1.8中如果链表长度大于8,链表就会转化为 红黑树,时间复杂度也降为了O(logn),性能得到了很大的优化. 当红黑数节点小于等于6会重新转换为链表. 代码分析: /** * 默认初始容量为16,0000 0001 右移4位 0001 0000…