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