Bonjour,
la méthode hashCode retourne un entier qui permet à des conteneurs de 'classer' les objets qu'il contient et ainsi de les retrouver plus rapidement. C'est particulier le cas de tous les conteneurs dont le nom commence par 'Hash' (p. ex. HashSet, HashMap, ...). Ces conteneurs peuvent contenir des objets sur lesquels un ordre n'est pas forcément défini (et facile à définir) contrairement aux conteneurs dont le nom commence par 'Tree'.
Selon l'API Java, la méthode hashCode doit respecter les contraintes suivantes :
- le nombre généré (le hashCode) doit rester le même d'un appel à l'autre tant que l'on ne change pas un élément (donnée membre) utilisé par la méthode de comparaison,
- deux objets égaux au sens de la méthode 'equals' doivent retourner le même hashCode.
- deux objets inégaux au sens de la méthode 'equals' peuvent avoir le même hashCode (et c'est pourquoi le hashCode, qui ressemble à un identificateur, n'est est pas un).
Il est important de bien définir cette méthode si l'on désire placer les objets d'une classe dans des conteneurs de manière efficace et performante. Moins il y aura de 'colisions' dans les hashCodes plus rapide seront les opérations sur les conteneurs.
Voilà, j'espère avoir pu vous aider.
Cordialement