HashCode

Fermé
stampia02 Messages postés 95 Date d'inscription samedi 30 juillet 2011 Statut Membre Dernière intervention 13 mai 2017 - 12 mars 2017 à 22:50
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 13 mars 2017 à 07:02
Bonjour,

J'aimerai connaitre la meilleur facon de redefinir hashCode et d'avoir une méthode de hashing la plus efficace possible?

Merci




1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
12 mars 2017 à 23:22
Bonjour,

Java s'occupe d'optimiser l'algorithme de hachage, la seule chose qu'il est nécessaire de lui fournir c'est un entier avec ces caractéristiques :
  • il est discriminant (deux objets différents doivent avoir très peu de chance d'avoir le même hashcode)
  • il est rapide à calculer

Mais que la valeur du hashCode soit 1, 42 ou 165874 ça n'a aucun impact.
0
stampia02 Messages postés 95 Date d'inscription samedi 30 juillet 2011 Statut Membre Dernière intervention 13 mai 2017 1
13 mars 2017 à 00:12
Merci, mais comment je fais pour dinstinguer mes données dans un ensemble dans le cas ou j'ai plusieurs fois le même hashCode?
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
13 mars 2017 à 07:02
Si deux hashCode sont identiques il faut appeler la méthode equals pour vérifier si c'est juste une coïncidence ou si c'est bien deux données égales.
L'intérêt du hashCode est d'être rapide à calculer, ça permet d'éviter l'appel de la méthode equals dans la plupart des cas, car vu qu'elle est exhaustive elle est plus coûteuse, mais ça reste la seule méthode qui permet d'être absolument sûr de l'égalité de deux objets.
0