Que renverra la méthode HasMap.get() si les méthodes equals et hashCode ne sont pas redéfinies?
sobes.tech IA
Réponse de l'IA
null sera renvoyé si la clé utilisée pour la recherche n'est pas exactement le même objet (a la même référence) que celui utilisé lors de l'insertion.
La raison en est que HashMap utilise une combinaison de hashCode() et equals() pour déterminer l'"égalité" des clés. Si ces méthodes ne sont pas redéfinies, ce sont celles de Object qui sont utilisées.
Object.hashCode()retourne généralement une valeur basée sur l'adresse mémoire de l'objet, donc unique pour chaque instance.Object.equals()vérifie simplement l'égalité par référence (this == obj).
Ainsi, pour que HashMap.get() trouve un élément avec des equals et hashCode() non redéfinis, les deux conditions doivent être remplies :
- Les codes de hachage (
Object.hashCode()) doivent être égaux, ce qui est très peu probable pour des objets différents. - Les objets doivent être identiques par référence (
Object.equals()), c'est-à-dire qu'il doit s'agir de la même instance.
Si vous placez un objet dans un HashMap, puis essayez de le récupérer en utilisant un autre objet avec les mêmes valeurs de champs (mais pas la même instance), hashCode et equals par défaut les considéreront comme différents, et get() renverra null.