Maison Java JavaBase Quelle est la différence entre hashcode et égal ?

Quelle est la différence entre hashcode et égal ?

Jul 03, 2020 am 11:59 AM
equals hashcode

La différence entre hashcode et égal est : 1. Si deux objets égal renvoie vrai, alors hashCode doit également renvoyer le même nombre int ; 2. Si deux objets hashCode renvoie le même numéro int, alors égal n'est pas nécessairement le cas. Renvoie vrai.

Quelle est la différence entre hashcode et égal ?

hashcode : une représentation entière de l'adresse initiale de l'objet

Les objets en Java sont gérés par la JVM, et la JVM fera l'affaire ainsi, lorsqu'il le juge approprié, le déplacement d'objets, par exemple le GC, se produit sous certains algorithmes GC qui nécessitent une défragmentation de la mémoire. A ce moment, l'adresse de l'objet changera, mais le hashcode ne changera pas. ​

hashCode vise à améliorer l'efficacité de la recherche dans le stockage de la structure de hachage et n'a aucun effet dans les tableaux linéaires.

  1. Généralement, si un objet d'une classe sera stocké dans une structure de stockage de hachage telle que HashTable, HashSet, HashMap, etc., alors il est préférable de réécrire hashCode après avoir réécrit égal, sinon, les données seront stockées. Non-unicité (deux données égales sont stockées). S'il est déterminé qu'il ne sera pas stocké dans ces structures de hachage, vous n'avez pas besoin de réécrire le hashCode.

  2. Si égal renvoie vrai pour deux objets, hashCode doit également renvoyer le même nombre int.

  3. Si égal renvoie faux pour deux objets, hashCode ne renvoie pas nécessairement des nombres int différents, mais générer différentes valeurs hashCode pour des objets inégaux peut améliorer les performances de la table de hachage.

  4. Si le hashCode de deux objets renvoie le même nombre int, égal à ne renvoie pas nécessairement vrai.

  5. Si le hashCode de deux objets renvoie des nombres int différents, les égaux doivent renvoyer false.

  6. Si le même objet est déjà stocké dans la collection lors de l'exécution, les informations pertinentes qui affectent la valeur hashCode ne peuvent pas être modifiées, sinon cela provoquera des fuites de mémoire.

  7. De manière générale, lorsque vous comparez des tailles entre des objets, vous devez remplacer la méthode égale.

Tutoriel recommandé : "Tutoriel Java"

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)