Kiek minimaliai elementų reikia HashMap inicijavimui be automatinio išplėtimo?
sobes.tech AI
Atsakymas iš AI
Java HashMap turi pradinių talpų (capacity) ir apkrovos koeficientą (load factor), kurie pagal numatytuosius nustatymus yra atitinkamai 16 ir 0,75. Automatinis plėtimas įvyksta, kai elementų skaičius viršija capacity * load factor.
Norint išvengti automatinio plėtimo inicializacijos metu, reikia nustatyti tokį capacity, kuris galės talpinti reikiamą elementų skaičių be viršijimo.
Minimalus elementų skaičius HashMap inicializacijai be plėtimo yra maksimalus galimas skaičius, kuris neviršija threshold = capacity * load factor.
Pavyzdžiui, su capacity=16 ir load factor=0,75, threshold yra 12. Tai reiškia, kad iki 12 elementų pridėjimo plėtimas neįvyks.
Jei norite inicializuoti HashMap su tam tikru elementų skaičiumi n be plėtimo, nustatykite initialCapacity >= n / loadFactor.
Pavyzdys:
int expectedElements = 10;
float loadFactor = 0.75f;
int initialCapacity = (int) Math.ceil(expectedElements / loadFactor);
HashMap<String, String> map = new HashMap<>(initialCapacity, loadFactor);