Ответ
При создании HashMap конструктором без параметров устанавливается начальная емкость (capacity) в 16 корзин и коэффициент загрузки (load factor) 0.75.
Как это работает:
- Емкость 16: означает, что внутренняя хеш-таблица изначально имеет 16 ячеек (бакетов).
- Коэффициент загрузки 0.75: определяет порог заполнения для увеличения размера. При достижении
capacity * loadFactorэлементов (т.е.16 * 0.75 = 12) происходит удвоение емкости и рехеширование всех элементов.
Примеры создания:
// Дефолтные параметры: 16 бакетов, load factor 0.75
Map<String, Integer> defaultMap = new HashMap<>();
// Указание начальной емкости (округлится до степени двойки)
Map<String, Integer> customMap = new HashMap<>(32); // Фактически 32 бакета
Map<String, Integer> customMap2 = new HashMap<>(50); // Округлится до 64
Важно: Фактическое количество бакетов всегда является степенью двойки. Если в конструкторе указана произвольная емкость, она автоматически округляется вверх до ближайшей степени двойки.