为什么 HashMap 要求初始容量是 2 的幂?
当我看到以下内容时,我正在浏览Java的HashMap源代码
//The default initial capacity - MUST be a power of two.
static final int DEFAULT_INITIAL_CAPACITY = 16;
我的问题是,为什么首先存在这一要求?我还看到,允许创建具有自定义容量的HashMap的构造函数将其转换为2的幂:
int capacity = 1;
while (capacity < initialCapacity)
capacity <<= 1;
为什么容量总是必须是 2 的幂?
此外,当执行自动重述时,究竟会发生什么?哈希函数是否也已更改?