Différence Entre Equals Et HashCode En Java

Table des matières:

Différence Entre Equals Et HashCode En Java
Différence Entre Equals Et HashCode En Java

Vidéo: Différence Entre Equals Et HashCode En Java

Vidéo: Différence Entre Equals Et HashCode En Java
Vidéo: Урок по Java 49: Equals and HashCode 2024, Mai
Anonim

Différence clé - est égal à hashCode en Java

L'égalité est similaire à l'opérateur ==, qui consiste à tester l'identité d'objet plutôt que l'égalité d'objet. Le hashCode est une méthode par laquelle une classe décompose implicitement ou explicitement les données stockées dans une instance de la classe en une seule valeur de hachage, qui est un entier signé 32 bits. La principale différence entre equals et hashCode en Java est que l'égal est utilisé pour comparer deux objets tandis que hashCode est utilisé dans le hachage pour décider dans quel groupe un objet doit être catégorisé.

CONTENU

1. Présentation et différence clé

2. Qu'est-ce qui est égal en Java

3. Qu'est-ce que hashCode en Java

4. Comparaison côte à côte - equals vs hashCode en Java sous forme tabulaire

5. Résumé

Qu'est-ce qui est égal en Java?

La méthode equals est utilisée pour comparer deux objets. La méthode equals par défaut est définie dans la classe d'objets. Cette implémentation est similaire à l'opérateur ==. Les deux références d'objet sont égales uniquement si elles pointent vers le même objet. Il est possible de remplacer la méthode d'égalité.

Différence entre equals et hashCode en Java
Différence entre equals et hashCode en Java

Figure 01: Programme Java avec égaux

L'instruction System.out.println (s1.equals (s2)) donnera la réponse false car s1 et s2 font référence à deux objets différents. C'était similaire à l'instruction, System.out.println (s1 == s2);

L'instruction System.out.println (s1.equals (s3)) donnera la réponse vraie car s1 et s3 font référence au même objet. C'était similaire à l'instruction, System.out.println (s1 == s3);

Il n'y a pas de méthode égale dans la classe Student. Par conséquent, les égaux de la classe Object sont appelés. True s'affiche uniquement si la référence d'objet pointe vers le même objet.

Différence entre equals et hashCode dans Java Figure 02
Différence entre equals et hashCode dans Java Figure 02

Figure 02: Programme Java avec égalité remplacée

Selon le programme ci-dessus, la méthode equals est remplacée. Un objet est passé à la méthode et son type est converti en Student. Ensuite, les valeurs d'identifiant sont vérifiées. Si les valeurs id sont similaires, il retournera true. Sinon, il retournera faux. Les identifiants de s1 et s2 sont similaires. Donc, il imprimera vrai. Les identifiants de s1 et s3 sont également similaires, donc il sera affiché true.

Qu'est-ce que hashCode en Java?

Le hashCode est utilisé dans le hachage pour décider dans quel groupe un objet doit être catégorisé. Un groupe d'objets peut partager le même hashCode. Une fonction de hachage correcte peut répartir uniformément les objets dans différents groupes.

Un hashCode correct peut avoir les propriétés suivantes. Supposons qu'il existe deux objets obj1 et obj2. Si obj1.equals (obj2) est vrai, alors obj1.hashCode () est égal à obj2.hashCode (). Si obj1.equals (obj2) est faux, il n'est pas nécessaire que obj1.hashCode () ne soit pas égal à obj2.hashCode (). Les deux objets inégaux peuvent également avoir le même hashCode.

Différence entre equals et hashCode dans Java Figure 03
Différence entre equals et hashCode dans Java Figure 03

Figure 03: Classe Student avec equals et hashCode

Différence clé entre equals et hashCode en Java
Différence clé entre equals et hashCode en Java

Figure 04: Programme principal

La classe Student contient les méthodes equals et hashCode. La méthode equals de la classe Student recevra un objet. Si l'objet est nul, il renverra false. Si les classes des objets ne sont pas les mêmes, il retournera false. Les valeurs d'identifiant sont vérifiées dans les deux objets. S'ils sont similaires, il retournera vrai. Sinon, il retournera faux.

Dans le programme principal, les objets s1 et s2 sont créés. Lors de l'appel de s1.equals (s2) donnera true car la méthode equals est surchargée et vérifie les valeurs id des deux objets. Même s'ils se réfèrent à deux objets, la réponse est vraie car les valeurs id de s1 et s2 sont les mêmes. Comme s1.equals (s2) est vrai, le hashCode de s1 et s2 doit être égal. L'impression du hashCode de s1 et s2 donne la même valeur. La méthode hashCode peut être utilisée avec des collections telles que HashMap.

Quelle est la différence entre equals et hashCode en Java?

Diff article au milieu avant la table

est égal à hashCode en Java

equals est une méthode en Java qui agit de manière similaire à l'opérateur ==, qui consiste à tester l'identité d'objet plutôt que l'égalité d'objet. hashCode est une méthode par laquelle une classe décompose implicitement ou explicitement les données stockées dans une instance de la classe en une seule valeur de hachage.
Usage
La méthode equals est utilisée pour comparer deux objets. La méthode est utilisée dans le hachage pour décider dans quel groupe un objet doit être placé.

Résumé - Equals vs hashCode en Java

La différence entre equals et hashCode en Java est que l'égal est utilisé pour comparer deux objets tandis que le hashCode est utilisé dans le hachage pour décider dans quel groupe un objet doit être catégorisé.

Recommandé: