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

posted @ 2021-05-28 16:02  abcdefghijklmnop  阅读(412)  评论(0编辑  收藏  举报