Почему initialCapacity для Hashtable равен 11, а DEFAULT_INITIAL_CAPACITY в HashMap равен 16 и требует степени 2
СравнениеHashMap
а такжеHashtable
Исходный код в JDK 1.6, я видел ниже коды внутри HashMap
/**
* The default initial capacity - MUST be a power of two.
*/
static final int DEFAULT_INITIAL_CAPACITY = 16;
int capacity = 1;
while (capacity < initialCapacity)
capacity <<= 1;
Тем не менее, в Hashtable я видел ниже коды?
table = new Entry[initialCapacity];
public Hashtable() {
this(11, 0.75f);
}
поэтому мой вопрос: почему hashMap требует степени 2 в качестве начальной емкости? и в то время как хэш-таблица выбирает 11 в качестве начальной емкости по умолчанию? Я предполагаю, что это не имеет ничего общего с тем, что hashtable является потокобезопасным и не допускает нулевой ключ или значения.
Спасибо.