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