1. JDK1.7和JDK1.8的区别?
1.1 数据结构
1.7是数组+链表,1.8是数据+链表+红黑树
1.2 hash算法
1.7需要做“位移运算”再做“与运算”,1.8只是做“与运算”,1.7这么做是为了增加数据的散 列性,1.8采用了红黑树所以可以适当降低对散列性的要求。
1.3 链表的插入方式
1.7是头插法1.8是尾插法,是因为1.8采用了红黑树。
2. 为什么要使用链表和红黑树?
采用链表和红黑树是为了解决hash算法算出的索引冲突问题。这表明,只有出现索引冲突 后JDK才会使用链表和红黑树进行数据存储。
3. 什么时候使用链表,什么时候使用红黑树?
正常情况是长度<6时树转链,长度>=8时链转树。