Junior — Middle
Kas notiek HashMap iekšienē, kad tiek ievietota jauna atslēgas-vertības pāris?
sobes.tech AI
Atbilde no AI
Kad HashMap tiek pievienots jauns atslēgas-vertības pāris, notiek šādi:
- Atslēgas
hashCode()metode tiek izmantota, lai aprēķinātu hash kodu. - Hash kods tiek pārveidots par masīva indeksu (backend HashMap — kaudžu masīvs) ar operāciju, piemēram, atstarpes atlikumu pēc masīva izmēra vai bitu maskas.
- Ja šajā indeksā esošajā kaudzē nav elementu, tiek izveidots jauns ieraksts ar atslēgu un vērtību.
- Ja kaudzē jau ir elementi (kolīzija), tiek pārskatīta ķēde (saistīts saraksts vai koks, ja ir daudz elementu), lai pārbaudītu, vai tāda atslēga jau pastāv:
- Ja atslēga ir atrasta, vērtība tiek atjaunināta.
- Ja atslēga nav atrasta, jauns ieraksts tiek pievienots ķēdei.
- Kad tiek sasniegts noteikts piepildījuma slieksnis (load factor), masīvs tiek paplašināts un elementi tiek pārkārtoti (rehash).
Piemērs:
Map<String, Integer> map = new HashMap<>();
map.put("apple", 5); // tiek aprēķināts hash("apple"), noteikts indekss, pievienots ieraksts