【发布时间】:2012-01-11 05:58:56
【问题描述】:
我在翻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;
为什么容量总是必须是二的幂?
另外,当执行自动重新散列时,究竟会发生什么?哈希函数也改变了吗?
【问题讨论】:
标签: java hashmap hashtable hash