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