Sobes.tech
Junior — Middle

Aké dôsledky majú, ak majú dva objektu rovnaký hash kód?

sobes.tech AI

Odpoveď od AI

Ak majú dva objektu rovnaký hash kód, nazýva sa to kolízia hashov. V Jave je to normálne a očakávané, pretože hash kód je int a môže existovať oveľa viac objektov. Dôsledky:

  • Kolízie môžu znížiť výkon hashových dátových štruktúr (napríklad HashMap alebo HashSet), pretože objekty s rovnakým hash kódom sa ukladajú do rovnakého koša (bucket), a pri vyhľadávaní je potrebné objekty porovnávať pomocou equals.
  • Je dôležité, aby metóda equals správne rozlišovala objekty pri rovnakom hash kóde, inak môžu byť dáta prepísané alebo stratené.

Príklad:

Map<MyObject, String> map = new HashMap<>();
// Ak MyObject prepíše hashCode(), ale equals() neberie do úvahy všetky polia,
// môžu nastať chyby pri práci s kolekciou.