Junior — Middle
Mikor és miért kell felülírni a hashCode metódust egy osztályban?
sobes.tech MI
Válasz az MI-től
A hashCode metódust felül kell írni az osztályban, ha az equals metódust felülírod. Ez szükséges a két metódus közötti szerződés betartásához: ha két objektum az equals szerint egyenlő, akkor a hash-kódjuknak is egyeznie kell. Ellenkező esetben az objektumok helytelenül működhetnek hash-alapú gyűjteményekben, például HashMap vagy HashSet.
Példa:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
MyClass other = (MyClass) obj;
return Objects.equals(field1, other.field1) && field2 == other.field2;
}
@Override
public int hashCode() {
return Objects.hash(field1, field2);
}
HashCode felülírása nélkül az equals szerint egyenlő objektumok különböző hash-kódokkal rendelkezhetnek, ami hibákhoz vezethet hash-alapú adatszerkezetekben.