Какво е минималното количество елементи, необходимо за инициализация на HashMap без автоматично разширяване?
sobes.tech AI
Отговор от 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);