Junior — Middle
Jakie są podstawowe zasady związku między metodami equals i hashCode w Java?
sobes.tech AI
Odpowiedź od AI
Podstawowe zasady relacji między equals a hashCode w Java:
- Jeśli dwa obiekty są równe według equals, ich hashCode musi być taki sam.
- Jeśli hashCode dwóch obiektów jest inny, equals musi zwrócić false.
- Jeśli equals zwraca false, hashCode może się zgadzać, ale jest to niepożądane, ponieważ pogarsza wydajność struktur hash.
To zapewnia poprawne działanie kolekcji korzystających z haszowania (HashMap, HashSet), gdzie hashCode określa kosz, a equals służy do dokładnego porównania obiektów.
Przykład:
@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);
}
Tutaj equals i hashCode opierają się na tym samym polu id, co zapewnia ich spójność.