Sobes.tech
Junior — Middle

Можете ли објаснити како је реализована структура података HashMap и како обезбеђује брз приступ елементима?

sobes.tech АИ

Одговор од АИ

HashMap je struktura podataka koja čuva parove ključ-vrednost i omogućava brz pristup vrednostima putem ključa. Osnovana je na nizu od bucket-ova gde se elementi smeštaju na osnovu hash koda ključa.

Kada dodajemo par, izračunava se hash kod ključa i na osnovu toga određuje indeks bucket-a (obično putem operacije modula sa veličinom niza). Ako u bucket-u već postoje elementi (kolizija), oni se čuvaju u obliku povezane liste ili stabla (u novijim verzijama Jave).

Prilikom pretraživanja elementa po ključu, vrše se:

  • Izračunavanje hash koda ključa
  • Određivanje bucket-a
  • Pretraživanje u bucket-u pomoću equals među elementima sa istim hash kodom

Ovo obezbeđuje prosečnu složenost pristupa O(1), ali u najgorem slučaju (mnoge kolizije) može degradirati do O(n). Da bi se to izbeglo, veličina niza se povećava kada se dostigne određeni faktor opterećenja (load factor).