Différence entre égal et hashCode en Java

Table des matières:

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

Vidéo: Différence entre égal et hashCode en Java

Vidéo: Différence entre égal et hashCode en Java
Vidéo: 02 - Méthode equals() de la classe Object 2024, Juillet
Anonim

Différence clé - égal vs hashCode en Java

L'égal est similaire à l'opérateur==, qui consiste à tester l'identité de l'objet plutôt que l'égalité de l'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é de 32 bits. La principale différence entre égal 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 classé.

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'objet. Cette implémentation est similaire à l'opérateur==. Les deux références d'objet ne sont égales que si elles pointent vers le même objet. Il est possible de remplacer la méthode equals.

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

Figure 01: Programme Java avec égal

L'instruction System.out.println(s1.equals(s2)) donnera la réponse fausse 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 equals dans la classe Student. Par conséquent, les égaux dans 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 égal et hashCode dans Java_Figure 02
Différence entre égal et hashCode dans Java_Figure 02

Figure 02: Programme Java avec égal à Overridden

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'id sont vérifiées. Si les valeurs d'id sont similaires, il retournera true. Sinon, il renverra faux. Les identifiants de s1 et s2 sont similaires. Ainsi, il imprimera vrai. Les identifiants de s1 et s3 sont également similaires, il s'affichera donc true.

Qu'est-ce que le hashCode en Java ?

Le hashCode est utilisé dans le hachage pour décider dans quel groupe un objet doit être classé. 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 y ait deux objets comme 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 égal et hashCode dans Java_Figure 03
Différence entre égal et hashCode dans Java_Figure 03

Figure 03: Classe d'étudiants avec des égaux et un 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 faux. Si les classes des objets ne sont pas les mêmes, il retournera faux. Les valeurs d'id 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 remplacée et elle vérifie les valeurs d'identifiant des deux objets. Même s'ils font référence à 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 ?

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é de l'objet plutôt que l'égalité de l'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.
Utilisation
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é - égal vs hashCode en Java

La différence entre les égaux et le hashCode en Java est que les égaux sont utilisés pour comparer deux objets tandis que le hashCode est utilisé dans le hachage pour décider dans quel groupe un objet doit être classé.

Conseillé: