Junior — Middle
Jaké jsou základní principy vztahu mezi metodami equals a hashCode v Java?
sobes.tech AI
Odpověď od AI
Základní principy vztahu mezi equals a hashCode v Javě:
- Pokud jsou dva objekty podle equals stejné, jejich hashCode musí být stejný.
- Pokud se hashCode dvou objektů liší, musí metoda equals vrátit false.
- Pokud equals vrátí false, může se hashCode shodovat, ale není to žádoucí, protože to zhoršuje výkon hashových struktur.
Toto zajišťuje správnou funkci kolekcí využívajících hashování (HashMap, HashSet), kde hashCode určuje koš a equals provádí přesné porovnání objektů.
Pří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);
}
Zde jsou equals a hashCode založeny na stejném poli id, což zajišťuje jejich konzistenci.