为什么HashMap链表长度超过8会转成树结构

本文深入探讨HashMap中红黑树的应用与优化策略,解析为何选择8作为转换阈值,结合泊松分布与加载因子0.75,揭示碰撞位置链表长度超8的概率极低的现象,仅为千万分之一。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先红黑树的插入、删除和遍历的最坏时间复杂度都是log(n),

TreeNodes的大小是常规Nodes的两倍,所以只有桶中包含足够多
的元素以供使用时,我们才会使用树。那为什么这个数字是8呢?

进入HashMap源码我发现了这个

权衡依据是以上情况符合泊松分布(一种统计与概率学里常见到的离散概率分布,适合于描述单位时间(或空间)内随机事件发生的次数),用0.75作为加载因子,每个碰撞位置的链表长度超过8个概率非常低,少于千万分之一。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值