Sobes.tech
Junior — Middle

Hogyan értékeljük a kulcs szerinti elem keresésének hatékonyságát HashMap-ben ütközések esetén?

sobes.tech MI

Válasz az MI-től

A HashMap-ben az elem keresése kulcs szerint átlagosan O(1) idő alatt történik, de ütközések esetén hatékonysága az ütközések kezelésének módjától függ.

Korábban az ütközéseket láncolt listákkal kezelték, és a legrosszabb esetben (amikor minden kulcs ugyanabba a kosárba kerül) a keresés O(n) lett.

Java 8-tól kezdve, ha egy kosárban lévő elemek száma meghalad egy bizonyos küszöböt, a láncolt lista kiegyensúlyozott fára (pl. piros-fekete fa) alakul át. Ez javítja a legrosszabb esetű keresést O(log n)-re.

Így:

  • Kis ütközésszám esetén a keresés közel marad O(1)-hez.
  • Nagy ütközésszám esetén a keresés O(log n) lesz.

Ez a fejlesztés jelentősen növeli a HashMap teljesítményét kedvezőtlen forgatókönyvekben.