Junior — Middle
Zašto se preporučuje implementacija metoda equals() i hashCode() zajedno prilikom definisanja klase?
sobes.tech АИ
Одговор од АИ
Metode equals() i hashCode() povezani su i moraju biti implementirani zajedno kako bi obezbedili ispravno ponašanje objekata u kolekcijama kao što su HashMap, HashSet i druge zasnovane na heširanju.
Ako se dva objekta smatraju jednakim putem equals(), njihova hashCode() vrednost mora biti ista. U suprotnom, kolekcije mogu raditi netačno: na primer, objekat neće biti pronađen u heš tabeli, čak i ako je tamo.
Primer:
@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);
}
Ova zajednička implementacija garantuje konzistentnost i ispravno funkcionisanje objekata u kolekcijama.