Sobes.tech
Junior — Middle

Mis juhtub HashMapi sees, kui sisestatakse uus võti-väärtus paar?

sobes.tech AI

Vastus AI-lt

Kui HashMap-i lisatakse uus võti-väärtus paar, toimub järgmine:

  1. Võtme hashCode() meetodi abil arvutatakse hash-kood.
  2. Hash-kood muudetakse massiivi indeksiks (backend HashMap — bucketite massiiv) näiteks, võttes jäägi massiivi suurusest või bitmaski.
  3. Kui selle indeksi bucketis pole elemente, luuakse uus kirje võtme ja väärtusega.
  4. Kui bucket juba sisaldab elemente (kokkusattumine), käiakse läbi ahel (sidus nimekiri või puu, kui elemente on palju), et kontrollida, kas selline võti juba eksisteerib:
    • Kui võti leitakse, uuendatakse väärtust.
    • Kui võti ei leidu, lisatakse uus kirje ahelasse.
  5. Kui saavutatakse teatud täitmispiir (load factor), laieneb massiiv ja elemendid ümber jaotatakse (rehash).

Näide:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 5); // arvutatakse hash("apple"), määratakse indeks, lisatakse kirje