相关疑难解决方法(0)

为什么HashMap要求初始容量为2的幂?

当我看到以下内容时,我正在浏览Java的HashMap源代码

//The default initial capacity - MUST be a power of two.
static final int DEFAULT_INITIAL_CAPACITY = 16;
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么这个要求首先存在?我还看到允许创建具有自定义容量的HashMap的构造函数将其转换为2的幂:

int capacity = 1;
while (capacity < initialCapacity)
  capacity <<= 1;
Run Code Online (Sandbox Code Playgroud)

为什么容量总是必须是2的幂?

此外,当执行自动重新散列时,究竟会发生什么?哈希函数也改变了吗?

java hash hashtable hashmap

41
推荐指数
2
解决办法
2万
查看次数

标签 统计

hash ×1

hashmap ×1

hashtable ×1

java ×1