Sobes.tech
Junior — Middle

Comment assurer la cohérence entre les méthodes hashCode() et equals() en Java et pourquoi est-ce important?

sobes.tech IA

Réponse de l'IA

En Java, les méthodes hashCode() et equals() doivent être cohérentes pour que les objets fonctionnent correctement dans des collections telles que HashMap ou HashSet. Les règles :

  • Si deux objets sont égaux selon equals(), alors leur hashCode() doit retourner la même valeur.
  • Si le hashCode() de deux objets est différent, alors equals() doit retourner false.

C'est important car les tables de hachage utilisent d'abord hashCode() pour une recherche rapide, puis equals() pour une comparaison précise. Ne pas respecter ce contrat peut entraîner un mauvais fonctionnement des collections.

Exemple :

@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);
}