初识HashMap之初始长度(二)

HashMap的初始长度设为16,因2的幂特性确保通过Hash函数计算的index均匀分布。Key的HashCode与Length-1(全为1的二进制)做与运算,提高分布均匀性,降低冲突。若长度非2的幂,如10,冲突可能性增加,不利于均匀分布。
摘要由CSDN通过智能技术生成

HashMap的初始长度为16,其次在自动扩展或手动初始化时,长度必须是2的幂。

初始值选择16是为了服务从key映射到index的哈希值。

上篇文章提到过初识HashMap(一)》,从Key映射到HashMap数组的对应位置,会用到一个Hash函数:

             index =  Hash("id")

如何实现一个尽量均匀分布的Hash函数呢?我们通过Key的HashCode值来做运算。

有人可能想到用取模的方式实现index =  HashCode(Key) % Length ,原理是一样的,不过取模的执行效率太低,采用位运算。


</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值