jdk1.8中HashMap底层链表转红黑树的阈值为什么是8?链表查询慢为啥不直接用红黑树?

总结一下:jdk1.8中HashMap底层链表转红黑树的阈值为什么是8?链表查询慢为啥不直接用红黑树?

1、红黑树插入效率慢,例如我插入一个001、002、003会进行左旋,进行数据交换,效率较低,阈值为8是想达到一个平衡。
2、红黑树中的TreeNode是链表中的Node所占空间的2倍。
3、虽然红黑树的查找效率为o(logN),要优于链表的o(N),但是当链表长度比较小的时候,即使全部遍历,时间复杂度也不会太高。
4、实验证明,之所以是8,hash碰撞发生8次的概率已经降低到了0.00000006。
5、链表长度大于8时,链表性能已经很差了。

上一篇:HashMap getOrDefault(key, defaultValue)


下一篇:RocketMQ源码分析(二)Producer