Junior — Middle
Miért ajánlott az equals() és hashCode() metódusokat együtt implementálni egy osztály meghatározásakor?
sobes.tech MI
Válasz az MI-től
Az equals() és hashCode() metódusok összefüggnek egymással, és együtt kell őket megvalósítani a helyes viselkedés biztosítása érdekében olyan kollekciókban, mint például HashMap, HashSet és más, hash-elésen alapuló kollekciók.
Ha két objektumot az equals() szerint egyenlőnek tekintünk, akkor a hashCode() értékük ugyanaz kell legyen. Ellenkező esetben a kollekciók helytelenül működhetnek: például egy objektum nem lesz megtalálható a hash-táblában, még akkor sem, ha ott van.
Példa:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyClass myClass = (MyClass) o;
return id == myClass.id;
}
@Override
public int hashCode() {
return Objects.hash(id);
}
Ezzel a közös megvalósítással garantálható az objektumok konzisztenciája és helyes működése a kollekciókban.