1.数据结构上的区别
- 1.7:数组+链表
- 1.8:数组+链表+红黑树,当链表的长度大于8时后面的数据结构变为红黑树
2.hash值的计算上
- 1.7:用了多次扰动(4次位运算+5次异或运算)
- 1.8:只用了1次位运算+1次异或运算
3.链表数据插入方法
1.7:头插法
1.8:尾插法
扩展点:
- 头插法和尾插法的差别???
- 1.7用单链表进行纵向延伸,当采用头插法时会容易出现逆序且环形链表死循环问题(为什么呢???);1.8之后加入红黑树使用尾插法,能够避免逆序且链表死循环的问题。
扩展问题:
- 引入红黑树的原因 :提高hashMap的性能,解决hash碰撞之后链表过长导致索引效率低的问题。利用红黑树可以将时间复杂度从O(n)降为O(logn)