Differenza Tra Uguale E HashCode In Java

Sommario:

Differenza Tra Uguale E HashCode In Java
Differenza Tra Uguale E HashCode In Java

Video: Differenza Tra Uguale E HashCode In Java

Video: Differenza Tra Uguale E HashCode In Java
Video: Java. Методы equals и hashCode. 2024, Novembre
Anonim

Differenza chiave: è uguale a hashCode in Java

L'uguale è simile all'operatore ==, che verifica l'identità dell'oggetto piuttosto che l'uguaglianza dell'oggetto. HashCode è un metodo mediante il quale una classe scompone in modo implicito o esplicito i dati archiviati in un'istanza della classe in un singolo valore hash, che è un intero con segno a 32 bit. La differenza fondamentale tra uguale e hashCode in Java è che uguale viene utilizzato per confrontare due oggetti mentre hashCode viene utilizzato nell'hashing per decidere in quale gruppo deve essere classificato un oggetto.

CONTENUTI

1. Panoramica e differenza chiave

2. Che cosa è uguale a Java

3. Che cos'è hashCode in Java

4. Confronto affiancato - è uguale a hashCode in Java in formato tabulare

5. Riepilogo

Cosa è uguale in Java?

Il metodo uguale viene utilizzato per confrontare due oggetti. Il metodo equals predefinito è definito nella classe di oggetti. Questa implementazione è simile all'operatore ==. I due riferimenti oggetto sono uguali solo se puntano allo stesso oggetto. È possibile sovrascrivere il metodo uguale.

Differenza tra uguale e hashCode in Java
Differenza tra uguale e hashCode in Java

Figura 01: programma Java con uguale

L'istruzione System.out.println (s1.equals (s2)) darà la risposta falsa perché s1 e s2 si riferiscono a due oggetti diversi. Era simile all'istruzione System.out.println (s1 == s2);

L'istruzione System.out.println (s1.equals (s3)) darà la risposta vera perché s1 e s3 si riferiscono allo stesso oggetto. Era simile all'istruzione System.out.println (s1 == s3);

Non esiste un metodo uguale nella classe Student. Pertanto, viene chiamato l'uguale nella classe Object. True viene visualizzato solo se il riferimento all'oggetto punta allo stesso oggetto.

Differenza tra uguale e hashCode in Java Figure 02
Differenza tra uguale e hashCode in Java Figure 02

Figura 02: programma Java con override uguale

Secondo il programma precedente, il metodo uguale viene ignorato. Un oggetto viene passato al metodo e viene eseguito il cast del tipo a Student. Quindi, vengono controllati i valori id. Se i valori id sono simili, restituirà true. In caso contrario, restituirà false. Gli id di s1 e s2 sono simili. Quindi, verrà stampato vero. Anche gli ID di s1 e s3 sono simili, quindi verrà stampato vero.

Cos'è hashCode in Java?

L'hashCode viene utilizzato nell'hashing per decidere in quale gruppo deve essere classificato un oggetto. Un gruppo di oggetti può condividere lo stesso hashCode. Una corretta funzione di hashing può distribuire uniformemente gli oggetti in diversi gruppi.

Un hashCode corretto può avere le seguenti proprietà. Supponiamo che ci siano due oggetti come obj1 e obj2. Se obj1.equals (obj2) è vero, allora obj1.hashCode () è uguale a obj2.hashCode (). Se obj1.equals (obj2) è falso, non è necessario che obj1.hashCode () non sia uguale a obj2.hashCode (). I due oggetti disuguali potrebbero anche avere lo stesso hashCode.

Differenza tra uguale e hashCode in Java Figure 03
Differenza tra uguale e hashCode in Java Figure 03

Figura 03: classe Student con uguale e hashCode

Differenza chiave tra uguale e hashCode in Java
Differenza chiave tra uguale e hashCode in Java

Figura 04: programma principale

La classe Student contiene i metodi uguale e hashCode. Il metodo equals nella classe Student riceverà un oggetto. Se l'oggetto è nullo, restituirà false. Se le classi degli oggetti non sono le stesse, restituirà false. I valori id vengono controllati in entrambi gli oggetti. Se sono simili, restituirà true. Altrimenti restituirà false.

Nel programma principale vengono creati gli oggetti s1 e s2. Quando si chiama s1.equals (s2) darà true perché il metodo equals è sovrascritto e controlla i valori id dei due oggetti. Anche se si riferiscono a due oggetti, la risposta è vera perché i valori id di s1 e s2 sono gli stessi. Poiché s1.equals (s2) è vero, l'hashCode di s1 e s2 dovrebbe essere uguale. La stampa dell'hashCode di s1 e s2 fornisce lo stesso valore. Il metodo hashCode può essere utilizzato con raccolte come HashMap.

Qual è la differenza tra uguale e hashCode in Java?

Articolo diff. Al centro prima della tabella

è uguale a vs hashCode in Java

equals è un metodo in Java che agisce in modo simile all'operatore ==, che consiste nel testare l'identità dell'oggetto piuttosto che l'uguaglianza dell'oggetto. hashCode è un metodo mediante il quale una classe suddivide in modo implicito o esplicito i dati archiviati in un'istanza della classe in un singolo valore hash.
Utilizzo
Il metodo uguale viene utilizzato per confrontare due oggetti. Il metodo viene utilizzato nell'hashing per decidere in quale gruppo deve essere inserito un oggetto.

Riepilogo: è uguale a hashCode in Java

La differenza di uguale e hashCode in Java è che uguale viene utilizzato per confrontare due oggetti mentre hashCode viene utilizzato nell'hash per decidere in quale gruppo un oggetto deve essere classificato.

Raccomandato: