Middle
Pourquoi hashCode() peut-il retourner des valeurs identiques pour différents objets?
sobes.tech IA
Réponse de l'IA
Parce que la plage de valeurs possibles du hachage (int) est bien inférieure à la plage de valeurs possibles du contenu des objets. En fait, cette propriété de toute fonction de hachage est de compresser les données d'entrée dans une plage fixe ou plus petite. Les collisions de hachage (lorsque différents objets ont le même hachage) sont inévitables.
Pour le bon fonctionnement des collections basées sur le hachage (par exemple, HashMap, HashSet), les règles suivantes doivent être respectées :
- Si Objects.equals(a, b), alors a.hashCode() == b.hashCode().
- Si !Objects.equals(a, b), alors a.hashCode() peut être égal ou différent de b.hashCode().
Les collections utilisent hashCode() pour déterminer rapidement une "seau" potentiel pour placer ou rechercher un élément, puis utilisent equals() pour une vérification précise à l'intérieur de ce seau.