为什么HashMap要求初始容量是2的幂?
- 论坛
- 为什么HashMap要求初始容量是2的幂?
13 浏览
为什么HashMap要求初始容量是2的幂?
我在查看Java的HashMap源代码时,看到了以下内容:
//默认初始容量 - 必须是2的幂。 static final int DEFAULT_INITIAL_CAPACITY = 16;
我的问题是,为什么一开始就存在这个要求?我还注意到,允许使用自定义容量创建HashMap的构造函数会将其转换为2的幂:
int capacity = 1; while (capacity < initialCapacity) capacity <<= 1;
为什么容量必须始终是2的幂?
此外,当执行自动重新哈希时,会发生什么?哈希函数是否也会改变?