Junior — Middle
De ce este recomandat să implementați metodele equals() și hashCode() împreună atunci când definiți o clasă?
sobes.tech AI
Răspuns de la AI
Metodele equals() și hashCode() sunt legate între ele și trebuie implementate împreună pentru a asigura comportamentul corect al obiectelor în colecții precum HashMap, HashSet și altele bazate pe hashing.
Dacă două obiecte sunt considerate egale prin equals(), atunci hashCode() lor trebuie să returneze aceeași valoare. În caz contrar, colecțiile pot funcționa incorect: de exemplu, un obiect nu va fi găsit în tabelul hash, chiar dacă este acolo.
Exemplu:
@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);
}
Astfel, implementarea comună garantează coerența și funcționarea corectă a obiectelor în colecții.