为何HashMap的数组长度一定是2的次幂?

https://blog.csdn.net/Tane_1018/article/details/103392267

通过上边可以看到,当数组长度不为2的n次幂 的时候,hashCode 值与数组长度减一做与运算 的时候,会出现重复的数据,

因为不为2的n次幂 的话,对应的二进制数肯定有一位为0 , 这样不管你的hashCode 值对应的该位,是0还是1 ,

最终得到的该位上的数肯定是0,这带来的问题就是HashMap上的数组元素分布不均匀,而数组上的某些位置,永远也用不到
————————————————
版权声明:本文为CSDN博主「Tane_1018」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Tane_1018/java/article/details/103392267

posted @ 2020-07-28 16:03  随园  阅读(1491)  评论(0编辑  收藏  举报