Какое минимальное количество элементов необходимо для инициализации HashMap без автоматического расширения?

HashMap в Java имеет начальную ёмкость (capacity) и коэффициент загрузки (load factor), по умолчанию 16 и 0.75 соответственно.

Короткий ответ

Что ответить на собеседовании

HashMap в Java имеет начальную ёмкость (capacity) и коэффициент загрузки (load factor), по умолчанию 16 и 0.75 соответственно. Автоматическое расширение происходит, когда количество элементов превышает capacity load factor.

Подробный разбор

Ответ с пояснениями

HashMap в Java имеет начальную ёмкость (capacity) и коэффициент загрузки (load factor), по умолчанию 16 и 0.75 соответственно. Автоматическое расширение происходит, когда количество элементов превышает capacity * load factor.

Чтобы избежать автоматического расширения при инициализации, нужно задать ёмкость так, чтобы вместить нужное количество элементов без превышения порога.

Минимальное количество элементов для инициализации HashMap без расширения — это максимально возможное количество элементов, не превышающее threshold = capacity * load factor.

Например, при capacity=16 и load factor=0.75 threshold = 12. Значит, при добавлении до 12 элементов расширения не будет.

Если вы хотите инициализировать HashMap с определённым количеством элементов n без расширения, установите initialCapacity >= n / loadFactor.

Пример:

int expectedElements = 10;
float loadFactor = 0.75f;
int initialCapacity = (int) Math.ceil(expectedElements / loadFactor);
HashMap<String, String> map = new HashMap<>(initialCapacity, loadFactor);

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку