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.