Hogyan viselkedik a rendszer, ha két különböző objektum ugyanazt a hashCode() értéket adja?
sobes.tech MI
Válasz az MI-től
Java-ban a hashCode() metódus egy egész szám értéket ad vissza, amit például a hash-táblákban (HashMap, HashSet) használnak. Ha két különböző objektum ugyanazt az értéket adja vissza a hashCode() metódusban, akkor ezt ütközésnek (kollision) nevezzük.
A rendszer ilyenkor helyesen működik, mivel a hashCode() csak egy gyors keresési segédérték. Miután megtaláltuk a megfelelő kosarat a szükséges hashCode() értékkel, az objektumokat az equals() metódussal hasonlítjuk össze. Ha az equals() hamisat ad vissza, az objektumokat különbözőként kezeljük, még akkor is, ha ugyanaz a hashCode() értékük.
Ezért a hashCode() ütközések nem sértik a kollekciók helyes működését, de csökkenthetik a teljesítményt az extra összehasonlítások miatt.