HashMap:为什么容量总是为2的n次幂

Posted ccccccccccccccccccccccccccccc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMap:为什么容量总是为2的n次幂相关的知识,希望对你有一定的参考价值。

HashMap:为什么容量总是为2的n次幂
1)、HashMap是根据key的hash值决定key放到哪个桶中,通过tab[i = (n - 1) & hash]公式计算得出

这里的n是HashMap的容量,因为n永远是2的次幂,所以n - 1通过二进制表示,永远都是末尾连续1的形式表示(如00001111、00000011),当(n - 1) 和hash做与运算时,会保留hash中后x位的1

例如00001111 & 10000011 = 00000011

这样做的好处在于:

&运算速度快,至少比%取模运算快

能保证索引值肯定在HashMap的容量大小范围内

(n - 1) & hash的值是均匀分布的,可以减少hash冲突
————————————————
版权声明:本文为CSDN博主「邋遢的流浪剑客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40378034/article/details/88220732

以上是关于HashMap:为什么容量总是为2的n次幂的主要内容,如果未能解决你的问题,请参考以下文章

jdk1.8 HashMap底层数据结构:深入解析为什么jdk1.8 HashMap的容量一定要是2的n次幂

为什么HashMap建议初始化容量,且容量为2的次幂?

HashMap 源码理解与面试

HashMap为什么HashMap的长度是2的N次幂?

HashMap之成员变量介绍

为什么 HashMap 的容量大小要设置为2的N次方?