Junior — Middle
Lehetséges, hogy két, az equals szerint nem egyenlő objektum ugyanazzal a hashCode értékkel rendelkezik?
sobes.tech MI
Válasz az MI-től
Igen, lehetséges. Java-ban a equals() és hashCode() metódusok szerződése megköveteli, hogy ha két objektum egyenlő az equals() szerint, akkor ugyanaz a hashCode() értékük legyen. De fordítva nem kötelező: két objektum ugyanazzal a hashCode() értékkel lehet, hogy nem egyenlő az equals() szerint.
Ez azért van, mert a hashCode() egy fix méretű egész értéket ad vissza, és különböző objektumok ütközhetnek — ugyanaz a hash.
Például, HashMap vagy HashSet típusú kollekciókban először összehasonlítják a hashCode() értékeket, majd az equals() segítségével pontosan meghatározzák az objektumok egyenlőségét.