Sobes.tech
Junior — Middle

Hoe wordt de consistentie tussen de methods hashCode() en equals() in Java gewaarborgd en waarom is dit belangrijk?

sobes.tech AI

Antwoord van AI

In Java moeten de methods hashCode() en equals() consistent zijn, zodat objecten correct werken in collecties zoals HashMap of HashSet. Regels:

  • Als twee objecten gelijk zijn volgens equals(), dan moet hun hashCode() hetzelfde waarde teruggeven.
  • Als de hashCode() van twee objecten verschillend is, dan zal equals() zeker false teruggeven.

Dit is belangrijk omdat hash-tabellen eerst hashCode() gebruiken voor snelle zoekopdrachten, en daarna equals() voor exacte vergelijking. Het niet naleven van dit contract kan leiden tot incorrect gedrag van collecties.

Voorbeeld:

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Person person = (Person) o;
    return id == person.id;
}

@Override
public int hashCode() {
    return Objects.hash(id);
}