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

  1. Atslēgas hashCode() metode tiek izmantota, lai aprēķinātu hash kodu.
  2. 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.
  3. Ja šajā indeksā esošajā kaudzē nav elementu, tiek izveidots jauns ieraksts ar atslēgu un vērtību.
  4. 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.
  5. 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