您的位置:首页 > 财经 > 产业 > Java每日一练_模拟面试题3(HashMap初始容量)

Java每日一练_模拟面试题3(HashMap初始容量)

2025/2/26 15:13:51 来源:https://blog.csdn.net/mopmgerg54mo/article/details/140922137  浏览:    关键词:Java每日一练_模拟面试题3(HashMap初始容量)

HashMap的初始容量为什么是16?

为了减少hash值的碰撞,需要实现一个尽量均匀分布的hash函数,在HashMap中通过利用key的hashcode值,来进行位运算公式:index = e.hash & (newCap - 1)其中newCap指容量大小16,index转换为10进制就是位置索引;

1.计算"book"的hashcode

    十进制 : 3029737

    二进制 : 101110001110101110 1001

2.HashMap长度是默认的16,length - 1的结果

    十进制 : 15

    二进制 : 1111

3.把以上两个结果做与运算

    101110001110101110 1001 & 1111 = 1001

    1001的十进制 : 9,所以 index=9

所以,HashMap的默认长度为16,是为了降低hash碰撞的几率因为newCap - 1变成二进制就是1111,它与前面的hashcode值进行&计算的时候,只要输入的hashcode本身分布均匀,hash算法的结果就是均匀的

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com