L'equals è simile all'operatore ==, che è quello di verificare 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 memorizzati in un'istanza della classe in un singolo valore hash, che è un intero con segno a 32 bit. Il differenza fondamentale tra uguali e hashCode in Giava è questo gli uguali sono usati per confrontare due oggetti mentre l'hashCode è usato nell'hash per decidere quale gruppo deve essere categorizzato un oggetto in.
1. Panoramica e differenza chiave
2. Cosa è uguale in Java
3. Cos'è hashCode in Java
4. Confronto affiancato - uguale a hashCode in Java in formato tabulare
5. Sommario
Il metodo equals viene utilizzato per confrontare due oggetti. Il metodo default uguale è definito nella classe dell'oggetto. Questa implementazione è simile all'operatore ==. I due riferimenti a oggetti sono uguali solo se puntano allo stesso oggetto. È possibile sovrascrivere il metodo equals.
Figura 01: programma Java con uguali
La dichiarazione System.out.println (s1.equals (s2)) darà la risposta false perché s1 e s2 si riferiscono a due oggetti diversi. Era simile alla dichiarazione, System.out.println (s1 == s2);
La dichiarazione System.out.println (s1.equals (s3)) darà la risposta vera perché s1 e s3 si riferiscono allo stesso oggetto. Era simile alla dichiarazione, System.out.println (s1 == s3);
Non esiste un metodo uguale nella classe Student. Pertanto, vengono chiamati gli uguali nella classe Object. True viene visualizzato solo se il riferimento all'oggetto punta allo stesso oggetto.
Figura 02: programma Java con uguali ignorati
Secondo il programma di cui sopra, il metodo equals è sovrascritto. Un oggetto viene passato al metodo ed è castato su Studente. Quindi, i valori di identificazione sono verificati. Se i valori ID sono simili, restituiranno 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 stamperà true.
L'hashCode viene utilizzato nell'hash per decidere a quale gruppo deve essere classificato un oggetto. Un gruppo di oggetti può condividere lo stesso hashCode. Una funzione di hashing corretta può distribuire uniformemente gli oggetti in gruppi diversi.
Un hashCode corretto può avere proprietà come segue. 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) è false, non è necessario che obj1.hashCode () non sia uguale a obj2.hashCode (). Anche i due oggetti non uguali potrebbero avere lo stesso hashCode.
Figura 03: Classe student con equals e hashCode
Figura 04: programma principale
La classe Student contiene i metodi equals e hashCode. Il metodo equals nella classe Student riceverà un oggetto. Se l'oggetto è null, restituirà false. Se le classi degli oggetti non sono le stesse, restituirà false. I valori id sono verificati in entrambi gli oggetti. Se sono simili, restituiranno true. Altrimenti restituirà false.
Nel programma principale, vengono creati gli oggetti s1 e s2. Quando si chiama s1.equals (s2) verrà restituito true perché il metodo equals viene 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. Siccome s1.equals (s2) è vero, l'hashCode di s1 e s2 dovrebbe essere uguale. La stampa del codice hash di s1 e s2 fornisce lo stesso valore. Il metodo hashCode può essere utilizzato con raccolte come HashMap.
equivale a hashCode in Java | |
equals è un metodo in Java che agisce in modo simile all'operatore ==, che è quello di verificare l'identità dell'oggetto piuttosto che l'uguaglianza degli oggetti. | hashCode è un metodo mediante il quale una classe suddivide in modo implicito o esplicito i dati memorizzati in un'istanza della classe in un singolo valore hash. |
uso | |
Il metodo è uguale per confrontare due oggetti. | Il metodo è utilizzato in hashing per decidere su quale gruppo deve essere inserito un oggetto. |
La differenza tra uguali e hashCode in Java è che gli uguali vengono usati per confrontare due oggetti mentre l'hashCode è usato nell'hash per decidere su quale gruppo un oggetto deve essere classificato.
1. "Java HashCode ()." Wikipedia, Wikimedia Foundation, 17 febbraio 2018. Disponibile qui
2. Harold, Elliotte Rusty. "Il metodo Equals ()." Metodo The Equals (), 2 novembre 2001. Disponibile qui