Sobes.tech
Junior — Middle

Можете ли објаснити унутрашњу структуру и рад HashMap у Јави?

sobes.tech АИ

Одговор од АИ

HashMap u Javi je struktura podataka za skladištenje parova ključ-vrednost sa brzim pristupom putem ključa.

Unutrašnja struktura:

  • HashMap koristi niz bačvi (bucket array).
  • Za ključ se računa hash kod (hashCode), koji se zatim pretvara u indeks niza.
  • U svakoj bačvi se čuvaju elementi sa istim indeksom, obično u obliku povezane liste ili stabla (sa Java 8, ako ima mnogo kolizija).

Rad:

  • Pri ubacivanju objekta, indeks se računa na osnovu hasha ključa.
  • Ako je bačva prazna, element se smešta tamo.
  • Ako je bačva zauzeta, proverava se jednakost ključeva (equals) da bi se ažurirala vrednost ili dodao novi element.
  • Pri pretraživanju po ključu, takođe se računa indeks, a zatim se pretražuju elementi u bačvi da bi se pronašla podudarnost.

Primer:

HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 5);
int value = map.get("apple"); // 5

Na ovaj način, HashMap obezbeđuje prosečno vreme pristupa O(1), ali pri velikom broju kolizija može degradirati do O(n).