Ответ
Начальная емкость (количество корзин/buckets) по умолчанию для HashMap в Java — 16.
Ключевые детали:
- Значение задано константой
DEFAULT_INITIAL_CAPACITY = 16в классеjava.util.HashMap. - Емкость можно задать явно через конструктор:
// HashMap с начальной емкостью 32 Map<String, Integer> map = new HashMap<>(32); - HashMap внутренне округляет указанную емкость до ближайшей степени двойки (например, 50 -> 64). Это оптимизирует вычисление индекса корзины через побитовые операции.
Как работает рост:
- Параметр
loadFactor(коэффициент загрузки) по умолчанию равен 0.75. - При достижении порога
емкость * loadFactor(для емкости 16 это 12 элементов)HashMapавтоматически удваивает свою емкость и перераспределяет все элементы (rehashing).