Junior — Middle
Čo sa deje vo vnútri HashMap, keď sa vloží nový kľúč-hodnota?
sobes.tech AI
Odpoveď od AI
Keď sa do HashMap vloží nový pár kľúč-hodnota, stane sa nasledovné:
- Vypočíta sa hash kód kľúča pomocou metódy
hashCode(). - Hash kód sa premení na index poľa (backend HashMap — pole bucketov) pomocou operácie, napríklad zvyšok po veľkosti poľa alebo bitová maska.
- Ak v bucketu na tomto indexe nie sú žiadne prvky, vytvorí sa nový záznam s kľúčom a hodnotou.
- Ak bucket už obsahuje prvky (kolízia), prechádza sa reťazcom (prepojený zoznam alebo strom, ak je veľa prvkov), aby sa overilo, či takýto kľúč už existuje:
- Ak je kľúč nájdený, hodnota sa aktualizuje.
- Ak kľúč neexistuje, nový záznam sa pridá do reťazca.
- Pri dosiahnutí určitého prahu zaplnenia (load factor) dôjde k rozšíreniu poľa a preusporiadaniu prvkov (rehash).
Príklad:
Map<String, Integer> map = new HashMap<>();
map.put("apple", 5); // Vypočíta sa hash("apple"), určí sa index, vloží sa záznam