Junior — Middle
Wat zijn de basisprincipes van de relatie tussen de methoden equals en hashCode in Java?
sobes.tech AI
Antwoord van AI
Basisprincipes van de relatie tussen equals en hashCode in Java:
- Als twee objecten gelijk zijn volgens equals, moeten hun hashCode gelijk zijn.
- Als de hashCode van twee objecten verschillend is, moet equals ongetwijfeld false retourneren.
- Als equals false retourneert, kan de hashCode overeenkomen, maar dit is niet wenselijk omdat het de prestaties van hash-structuren verslechtert.
Dit zorgt voor een correcte werking van collecties die hashing gebruiken (HashMap, HashSet), waarbij hashCode de bak bepaalt en equals de exacte vergelijking van objecten.
Voorbeeld:
@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);
}
Hier zijn equals en hashCode gebaseerd op hetzelfde veld id, wat hun consistentie garandeert.