c#为什么字典容量是素数?

涉及字典的内bai部实现方法。
字典在内部是通过hash表来实现查du找zhi的,而查找树在数据结构上采用了有序二叉树与“dao哈希桶”的一种数据结构来管理元素。
在每个哈希桶里,为了能快速找到一个元素是否存在于此桶,需要为每一个元素进行哈希编码,哈希编码常常采用除余法,也就是说,对于一个给定的a值, 其哈希码h = a mod p, 当这个p是一个素数时,h的冲突机率最少,查找速度也就最快。试想,如果是一个偶数的话,就会有更多情况下的余数冲突。
如果能将a保存到一个桶里的h值对应的下标的话,就可以用h直接定位到元素a,因此,就要求某个桶的容量是p。
这就是为何哈希桶的大小必须是一个素数的原因。
如果你给的构造参数不是素数,构造函数后向后找到大于等于你提供的初始容量的第一个素数,做为其第一个桶的大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值