Sobes.tech
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:

  1. A kulcs hash-kódját a hashCode() metódus segítségével számítjuk ki.
  2. 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.
  3. Ha az adott indexű buckett nem tartalmaz elemeket, akkor egy új bejegyzés jön létre a kulccsal és értékkel.
  4. 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.
  5. 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