Junior — Middle
Dans quels cas est-il nécessaire de redéfinir la méthode hashCode() en Java pour assurer un fonctionnement correct avec les collections?
sobes.tech IA
Réponse de l'IA
La méthode hashCode() en Java doit être redéfinie lorsque vous redéfinissez la méthode equals(). Cela est important pour le bon fonctionnement des objets dans les collections qui utilisent le hachage, telles que HashMap, HashSet et Hashtable.
Si equals() indique que deux objets sont égaux, alors leurs hashCode() doivent également renvoyer la même valeur. Sinon, les collections basées sur le hachage peuvent mal fonctionner : par exemple, ne pas pouvoir trouver un objet ou stocker des doublons.
Exemple :
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyClass myClass = (MyClass) o;
return id == myClass.id;
}
@Override
public int hashCode() {
return Objects.hash(id);
}
Ici, id est le champ qui détermine l'égalité des objets. Sans redéfinir hashCode(), les objets avec le même id peuvent avoir des hachages différents, ce qui romprait le fonctionnement des collections.