Junior — Middle
Care sunt principiile de bază ale relației dintre metodele equals și hashCode în Java?
sobes.tech AI
Răspuns de la AI
Principiile de bază ale relației dintre equals și hashCode în Java:
- Dacă două obiecte sunt egale conform equals, hashCode-ul lor trebuie să fie același.
- Dacă hashCode-ul a două obiecte diferă, equals trebuie să returneze neapărat false.
- Dacă equals returnează false, hashCode-ul poate coincide, dar acest lucru nu este de dorit, deoarece degradează performanța structurilor de tip hash.
Aceasta asigură funcționarea corectă a colecțiilor care utilizează hashing-ul (HashMap, HashSet), unde hashCode determină coșul și equals face comparația exactă a obiectelor.
Exemplu:
@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);
}
Aici, equals și hashCode se bazează pe același câmp id, ceea ce asigură coerența lor.