Sobes.tech
Junior — Middle

Jaka jest minimalna liczba elementów potrzebnych do inicjalizacji HashMap bez automatycznego rozszerzania?

sobes.tech AI

Odpowiedź od AI

HashMap w Javie ma początkową pojemność (capacity) i współczynnik obciążenia (load factor), odpowiednio 16 i 0,75 domyślnie. Automatyczne rozszerzanie następuje, gdy liczba elementów przekracza capacity * load factor.

Aby uniknąć automatycznego rozszerzania podczas inicjalizacji, należy ustawić pojemność tak, aby pomieściła wymaganą liczbę elementów bez przekraczania progu.

Minimalna liczba elementów do inicjalizacji HashMap bez rozszerzenia to maksymalna możliwa liczba elementów, nie przekraczająca threshold = capacity * load factor.

Na przykład, przy capacity=16 i load factor=0.75, threshold = 12. Oznacza to, że do dodania 12 elementów rozszerzenie nie nastąpi.

Jeśli chcesz zainicjalizować HashMap z określoną liczbą elementów n bez rozszerzenia, ustaw initialCapacity >= n / loadFactor.

Przykład:

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