Quel est l'usage du hashCode en Java?
en Java, obj.hashCode()
renvoie une certaine valeur. À quoi sert ce code de hachage dans la programmation?
7 réponses
hashCode()
est utilisé pour écopage dans Hash
implémentations comme HashMap
, HashTable
, HashSet
, etc.
la valeur reçue de hashCode()
est utilisée comme numéro de seau pour stocker des éléments de l'ensemble/carte. Ce numéro de seau est adresse de l'élément à l'intérieur du set/map.
quand vous faites contains()
il prendra le hash code de l'élément, puis chercher le seau où le code de hachage de points. Si plus d'un élément est trouvé dans le même seau (plusieurs objets peuvent avoir le même code de hachage), alors il utilise la méthode equals()
pour évaluer si les objets sont égaux, et ensuite décider si contains()
est vrai ou faux, ou décider si l'élément pourrait être ajouté dans l'ensemble ou non.
De la Javadoc :
renvoie une valeur de code de hachage pour l'objet. Cette méthode est supportée pour le bénéfice de hashtables tels que ceux fournis par java.util.Hashtable
.
le contrat général de hashCode
est:
-
chaque fois qu'elle est invoquée sur le même objet plus d'une fois lors de l'exécution D'une application Java, la méthode
hashCode
doit être appliquée de manière cohérente retourner le même entier , pourvu qu'aucune information utilisée dans les comparaisons égales sur l'objet ne soit modifiée. Cet entier n'a pas besoin de rester cohérent d'une exécution d'une application à une autre exécution de la même application. -
si deux objets sont égaux selon la méthode
equals(Object)
, alors appeler la méthodehashCode
sur chacun des deux objets doit produire le même résultat entier. -
Il est pas nécessaire que si deux objets sont inégales selon les
equals(java.lang.Object)
méthode, puis en appelant lahashCode
méthode sur chacun des deux objets doivent produire integer distinctes résultats. Cependant, le programmeur doit être conscient que la production de résultats entiers distincts pour les objets inégaux peut améliorer la performance des hashtables.
autant Qu'il est raisonnablement pratique, la méthode hashCode définie par l'objet class renvoie des entiers distincts pour des objets distincts. (Ceci est typiquement implémenté par convertissant l'adresse interne de l'objet en un entier , mais cette technique d'implémentation n'est pas requise par le langage de programmation Java.)
la valeur retournée par
hashCode()
est le code de hachage de l'objet, qui est l'adresse mémoire de l'objet en hexadécimal.par définition, si deux objets sont égaux, leur code de hachage doit aussi être égal. Si vous outrepassez la méthode
equals()
, vous changez la façon dont deux objets sont mis en équivalence et L'implémentation dehashCode()
n'est plus valide. Par conséquent, si vous outrepassez la méthode equals (), vous devez aussi outrepasser lahashCode()
méthode ainsi.
Cette réponse est du java SE 8 tutoriel officiel de la documentation
bien que hashcode ne fasse rien avec votre logique d'entreprise, nous devons nous en occuper dans la plupart des cas. Parce que lorsque votre objet est placé dans un conteneur à base de hash(HashSet, HashMap...), le conteneur met/obtient le hashcode de l'élément.
hashCode()
est une fonction qui prend un objet et renvoie une valeur numérique. Le hashcode un objet est toujours le même si l'objet ne change pas.
fonctions comme HashMap
, HashTable
, HashSet
, etc. ce besoin de stocker des objets utilisera un modulo hashCode
de la taille de leur tableau interne pour choisir dans quelle" position mémoire " (i.e. position tableau) pour stocker l'objet.
il y a des cas où des collisions peut se produire (deux objets finissent avec le même hashcode), et cela, bien sûr, doit être résolu avec soin.
Hashcode est un code unique généré par la JVM pour chaque création d'objet..nous utilisons hashcode pour effectuer certaines opérations sur des algorithmes liés au hachage comme hashtable, hashmap, etc..les avantages du hashcode est il rend la recherche opération facile bcoz lorsque nous cherchons un objet que le code unique aide à découvrir que obj. Mais on ne peut pas dire que le hashcode est l'adresse d'un obj. C'est un code unique généré par JVM pour chaque objet..c'est y maintenant le jour hashing algorithme z le plus populaire algorithme de recherche
la méthode du hashCode pour une classe donnée peut être utilisée pour le test pour l'inégalité des objets, mais Pas l'égalité d'objet, pour cette classe.
la méthode hashCode est utilisée par java.util.HashSet collection classe pour grouper les des éléments de cet ensemble dans des seaux de hachage pour une récupération rapide.