Le hachage (hashing) consiste à transformer un élément en un entier (int).
Cette transformation est faite par une fonction de hachage (hashing function), et résulte en valeur de hachage (hash value)
Vu qu’il n’y a pas forcément assez de nombres entiers pour représenter tous les objets, il est possible que deux objets qui ne sont pas égaux aient la même valeur de hachage.
On a donc x.equals(y) => x.hashCode() == y.hashCode(), mais x.hashCode() == y.hashCode =/> x.equals(y)
Règle de compatibilité
hashCode/equalsSi on redéfini
hashCode, il faudrait aussi redéfinirequals, et vice versa.
Dans la classe Objects, il y a une fonction statique hash qui retourne une valeur de hachage pour une combination d’objets.
HashSet
La classe HashSet utilise la méthode hashCode pour déterminer si deux objets peuvent être dans le même ensemble. hashCode doit donc être redéfini pour l’objet qu’on désire stocker dans le HashSet
Cependant deux objets ayant le même hashCode peuvent figurer dans le même ensemble HashSet (voir implication et règle de compatibilité)