Sobes.tech
Junior — Middle

El tudná magyarázni, hogyan valósul meg a HashMap adatszerkezet, és hogyan biztosít gyors hozzáférést az elemekhez?

sobes.tech MI

Válasz az MI-től

HashMap egy adatszerkezet, amely kulcs-érték párokat tárol, és gyors hozzáférést biztosít az értékekhez a kulcs segítségével. Egy hash-kód alapján helyezi el az elemeket egy tömbben, amelyet vödöröknek (buckets) nevezünk.

Amikor egy párt hozzáadunk, kiszámítjuk a kulcs hash-kódját, majd ennek alapján határozzuk meg a vödör indexét (általában a tömb méretével való modulo művelettel). Ha a vödörben már vannak elemek (ütközés), akkor láncolt listaként vagy fáként tárolódnak (Java újabb verzióiban).

Az elem keresésekor a következő lépések történnek:

  • A kulcs hash-kódjának kiszámítása
  • A vödör meghatározása
  • Keresés a vödörben a equals metódus segítségével, azonos hash-kódú elemek között

Ez átlagosan O(1) hozzáférési komplexitást biztosít, de a legrosszabb esetben (sok ütközés) O(n)-re romolhat. Ennek elkerülése érdekében a tömb mérete növelve lesz, amikor eléri a betöltési tényezőt (load factor).