Sobes.tech
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.