Expliquez les différences entre les méthodes equals() et hashCode() en Java et pourquoi elles sont nécessaires ensemble.
sobes.tech IA
Réponse de l'IA
Les méthodes equals() et hashCode() en Java sont liées à la comparaison d'objets et à leur utilisation dans des collections.
-
equals()détermine si deux objets sont égaux en sens (logiquement). Par défaut, dans la classeObject, elle compare les références (c'est-à-dire si ce sont les mêmes objets en mémoire), mais elle est généralement redéfinie pour comparer le contenu. -
hashCode()retourne une valeur entière — le code de hachage de l'objet. Il est utilisé, par exemple, dans les tables de hachage (HashMap,HashSet) pour une recherche rapide.
Il est important que si deux objets sont considérés comme égaux par equals(), ils doivent avoir le même hashCode(). Cette règle garantit le bon fonctionnement des collections basées sur le hachage.
Exemple:
class Person {
String name;
int age;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person)) return false;
Person p = (Person) o;
return age == p.age && name.equals(p.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
Ici, equals() compare les champs, et hashCode() retourne un hash basé sur les mêmes champs, ce qui assure la cohérence.