Junior — Middle
Mi történik a HashMap belsejében, amikor egy új kulcs-érték párt adunk hozzá?
sobes.tech MI
Válasz az MI-től
Amikor egy új kulcs-érték párt helyezünk el egy HashMap-be, a következő történik:
- A kulcs hash-kódját a
hashCode()metódus segítségével számítjuk ki. - A hash-kódot egy tömbindexre alakítjuk át (háttér HashMap — bucket tömb) például a tömb méretének maradékával vagy egy bitmaszkkal.
- Ha az adott indexű buckett nem tartalmaz elemeket, akkor egy új bejegyzés jön létre a kulccsal és értékkel.
- Ha a bucket már tartalmaz elemeket (ütközés), akkor végigmegyünk a láncon (láncolt lista vagy fa, ha sok elem van), hogy ellenőrizzük, létezik-e már ilyen kulcs:
- Ha a kulcs megtalálható, az érték frissül.
- Ha nem található, akkor egy új bejegyzés kerül a láncba.
- Amikor eléri a kitöltési küszöböt (betöltési tényező), a tömb bővül és az elemek újraelosztásra kerülnek (rehash).
Példa:
Map<String, Integer> map = new HashMap<>();
map.put("apple", 5); // Számításra kerül a hash("apple"), meghatározásra kerül az index, beszúrásra kerül a bejegyzés