web-dev-qa-db-fra.com

Quel est le but de la méthode hashcode en Java?

Quand nous avons les méthodes equals(), compareTo(), pourquoi existe-t-il une méthode hashcode() en Java? 

Et si nous utilisons HashTable, nous devons écraser la méthode hashcode(). Existe-t-il une raison particulière, à l'exception de l'accès rapide à des clés aléatoires? Si nous ignorons la méthode hashcode(), quelle serait l'implémentation probable?

Comment Java garantit l'unicité des objets en mémoire?


Hashcodes are typically used to enhance the performance of large collections of data.

Dans hashing, nous calculons hash code. c'est une tâche supplémentaire. Lorsque nous effectuons une opération supplémentaire pour chaque objet ajouté à une collection. Comment la performance est améliorée? 

14
MaheshVarma

Vous devez toujours remplacer equals et hashCode en tandem pour satisfaire leurs contrats interdépendants. Une classe qui les met en œuvre de manière contradictoire est tout simplement cassée et inacceptable même sous les normes techniques minimales.

Quant à pourquoi on utiliserait jamais la structure de données hashtable: parce que c'est l'option la plus rapide pour le stockage clé-valeur à accès aléatoire.

12
Marko Topolnik
2
Ajay Bhojak

En utilisant la méthode compareTo, vous établissez un "ordre total" pour vos objets. Un ordre total est une propriété assez faible: il ne peut vous dire que si un objet est "inférieur à" un autre, mais il ne vous donne aucune idée de la distance qui sépare deux objets.

Par exemple, si vous avez N objets dans une structure de données clé-valeur et que vous souhaitez rechercher la valeur d'une clé donnée. N'ayant qu'un ordre total, vous avez besoin d'au moins 0 comparaisons (log N) pour trouver une clé correspondante. 

Un code de hachage est une propriété plus forte car il peut vous indiquer si deux objets sont quelque peu similaires ou complètement différents. Grâce à cela, une table de hachage peut trouver une valeur pour une clé avec des opérations O(1).

1
Joni