Sobes.tech
Back to questions
Junior — Middle
69

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

Companies where asked
ЯндексЯндекс

Answer from AI

sobes.tech AI

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);