Junior — Middle
Aké sú základné princípy vzťahu medzi metódami equals a hashCode v Jave?
sobes.tech AI
Odpoveď od AI
Základné princípy vzťahu medzi equals a hashCode v Jave:
- Ak sú dva objekty rovnaké podľa equals, ich hashCode musí byť rovnaký.
- Ak sa hashCode dvoch objektov líši, equals musí nevyhnutne vrátiť false.
- Ak equals vráti false, hashCode môže zodpovedať, ale nie je to žiaduce, pretože to zhoršuje výkon hashových štruktúr.
Toto zabezpečuje správne fungovanie kolekcií využívajúcich hashovanie (HashMap, HashSet), kde hashCode určuje košík a equals vykonáva presné porovnanie objektov.
Príklad:
@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);
}
Tu sú equals a hashCode založené na tom istom poli id, čo zabezpečuje ich konzistenciu.