永发信息网

java中hashMap的默认大小为什么是2的幂

答案:1  悬赏:20  手机版
解决时间 2021-04-03 08:07
  • 提问者网友:刺鸟
  • 2021-04-02 13:01
java中hashMap的默认大小为什么是2的幂
最佳答案
  • 五星知识达人网友:何以畏孤独
  • 2021-04-02 14:14
在hashmap的源码中。put方法会调用indexFor(int h, int length)方法,这个方法主要是根据key的hash值找到这个entry在table中的位置,源码如下:

static int indexFor(int h, int length) {
// assert Integer.bitCount(length) == 1 : "length must be a non-zero power of 2";
return h & (length-1);
}
注意最后return的是h&(length-1)。
如果length不为2的幂,比如15。那么length-1的2进制就会变成1110。在h为随机数的情况下,和1110做&操作。尾数永远为0。那么0001、1001、1101等尾数为1的位置就永远不可能被entry占用。这样会造成浪费,不随机等问题。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯