Junior — Middle
Mik az alapelvek az equals és hashCode módszerek közötti kapcsolatban Java-ban?
sobes.tech MI
Válasz az MI-től
Az equals és hashCode közötti kapcsolat alapelvei Java-ban:
- Ha két objektum az equals szerint egyenlő, akkor azok hashCode értéke ugyanaz kell legyen.
- Ha két objektum hashCode értéke különbözik, akkor az equals-nek biztosan false-t kell adnia.
- Ha az equals false-t ad, a hashCode lehet egyező, de ez nem kívánatos, mivel rontja a hash-alapú struktúrák teljesítményét.
Ez biztosítja a hash-elést használó kollekciók (HashMap, HashSet) helyes működését, ahol a hashCode határozza meg a kosarat, az equals pedig az objektumok pontos összehasonlítását végzi.
Példa:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return Objects.equals(id, person.id);
}
@Override
public int hashCode() {
return Objects.hash(id);
}
Ebben az esetben az equals és a hashCode ugyanarra a mezőre, az id-ra épül, biztosítva azok összhangját.