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:
- Võtme
hashCode()meetodi abil arvutatakse hash-kood. - Hash-kood muudetakse massiivi indeksiks (backend HashMap — bucketite massiiv) näiteks, võttes jäägi massiivi suurusest või bitmaski.
- Kui selle indeksi bucketis pole elemente, luuakse uus kirje võtme ja väärtusega.
- 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.
- 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