Какой начальный размер (емкость) у HashMap в Java?

«Какой начальный размер (емкость) у HashMap в Java?» — вопрос из категории Основы программирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Начальная емкость (количество корзин/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).