HashMap在Jdk1.7和Jdk1.8中的区别
- 底层数据结构不同。在Jdk1.7中,HashMap是基于数组+链表的形式实现。而在Jdk1.8中,是由数组+链表+红黑树的形式实现。
- hashcode计算的复杂度不同。Jdk1.7中的hashCode计算大量运用了向右位移和异或运算,在Jdk1.8中做了简化调整。HashCode的计算复杂度代表着数据离散度,且过于复杂的计算消耗的CPU资源也会相应增加,而在Jdk1.8中由于引入了红黑树,其本身就已经大大增加了数据的离散度,所以不需要再进行特别复杂的HashCode计算了。
- 当链表的长度大于8的时候,会将链表转换为红黑树的结果进行存储。