Maison  >  Article  >  Java  >  Résumé de l'utilisation de equals et hashCode

Résumé de l'utilisation de equals et hashCode

PHP中文网
PHP中文网original
2017-06-20 16:50:321343parcourir

一 equals

La méthode equals est au niveau de l'objet. Par défaut, elle compare les adresses mémoire de deux objets. De nombreuses classes ont remplacé cette méthode pour comparer les adresses réelles. contenu des objets. , comparez généralement si les valeurs d'attribut des mêmes attributs du même type d'objets sont les mêmes.

Deux hashCode

1. Table de hachage

Une table de hachage est un tableau, Chaque L'élément du tableau est une liste chaînée unidirectionnelle. Les nœuds de la même liste chaînée unidirectionnelle ont les mêmes attributs. La valeur de l'attribut est l'indice du tableau. Ce même attribut est appelé hachage hashCode. valeur. .

2. Le rôle et la signification de la valeur de hachage hashCode

Avant que hashCode ne soit généré, l'ensemble de récupération doit être comparé un par un, et l'efficacité des requêtes est faible. Si les éléments avec la même valeur d'attribut dans la collection sont regroupés selon un certain attribut, est stocké de manière centralisée lors de l'interrogation, obtenez d'abord la valeur de l'attribut de l'objet de requête et localisez le groupe correspondant en fonction de. la valeur, ce qui réduit considérablement le problème. Cela augmente la portée de la requête et améliore l'efficacité de la requête C'est l'arrière-plan de hashCode.

Le hashCode de deux objets est égal, ce qui indique seulement qu'ils sont dans le même groupe. Il n'est pas garanti qu'ils soient identiques. Vous devez également comparer les adresses mémoire des deux. objets ou pass equals compare le contenu spécifique Ce n'est que lorsque cet élément est satisfait qu'il peut être déterminé que les deux objets sont identiques.

On voit de ce qui précède que dans la table de hachage, les deux mêmes objets doivent avoir la même valeur de hachage.

Méthode 3.hashCode()

La méthode hashCode() est au niveau de l'objet et génère par défaut une valeur int basée sur la mémoire adresse de l'objet.Cette valeur a une correspondance biunivoque avec l'adresse mémoire puisque les deux mêmes objets sont confirmés par égal uniquement pour garantir que les valeurs d'attribut des mêmes attributs sont les mêmes. de même, sans réécrire le hashCode, les valeurs de hachage sont différentes et sont stockées dans sont traitées comme comme deux objets avec un contenu différent dans la table de hachage, ce qui fait que deux éléments avec le même contenu apparaissent dans le hachage table, occupant une mémoire inutile. Par conséquent, une fois la méthode égale réécrite, elle doit être réécrite la méthode hashCode et assurez-vous que les mêmes objets ont des valeurs égales.

Trois applications

Les valeurs de hachage sont principalement utilisées dans les tables de hachage. La couche inférieure de HashMap et HashSet est une table de hachage, donc. si vous souhaitez utiliser Lorsqu'un objet est stocké dans un HashMap ou un HashSet, doit remplacer les méthodes equals et hashCode dans la classe afin que les mêmes objets aient des valeurs de hachage égales.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn