为什么Map桶中个数超过8才转为红黑树
源码在HashMap(jdk1.8)类一开始的注释中进行了简单的解释:

大意为桶中元素的数量大体遵循泊松分布,所以大概的概率如下:
泊松分布:
0: 0.60653066
1: 0.30326533
2: 0.07581633
3: 0.01263606
4: 0.00157952
5: 0.00015795
6: 0.00001316
7: 0.00000094
8: 0.00000006
更多的时候概率小于千万分之一
还有一种民间的说法:
红黑树的平均查找长度是log(n),如果长度为8,平均查找长度为log(8)=3,链表的平均查找长度为n/2,当长度为8时,平均查找长度为8/2=4,这才有转换成树的必要;链表长度如果是小于等于6,6/2=3,而log(6)=2.6,虽然速度也很快的,但是转化为树结构和生成树的时间并不会太短。
网友评论