Diferența dintre equals și hashCode în Java

Cuprins:

Diferența dintre equals și hashCode în Java
Diferența dintre equals și hashCode în Java

Video: Diferența dintre equals și hashCode în Java

Video: Diferența dintre equals și hashCode în Java
Video: Equals and Hashcode Contract in Java [Important Java Interview Question] | Code Decode 2024, Iulie
Anonim

Diferența cheie – este egală cu hashCode în Java

Egal este similar cu operatorul==, care testează mai degrabă identitatea obiectului decât egalitatea obiectului. HashCode este o metodă prin care o clasă descompune implicit sau explicit datele stocate într-o instanță a clasei într-o singură valoare hash, care este un întreg cu semn de 32 de biți. Diferența cheie dintre equals și hashCode în Java este că equals este folosit pentru a compara două obiecte, în timp ce hashCode este folosit în hashing pentru a decide în ce grup trebuie clasificat un obiect.

Ce este egal în Java?

Metoda egal este folosită pentru a compara două obiecte. Metoda implicită equals este definită în clasa obiectului. Această implementare este similară cu operatorul==. Cele două referințe la obiect sunt egale numai dacă indică același obiect. Este posibil să suprascrieți metoda equals.

Diferența dintre equals și hashCode în Java
Diferența dintre equals și hashCode în Java

Figura 01: Program Java cu egal cu

Instrucțiunea System.out.println(s1.equals(s2)) va da răspunsul fals deoarece s1 și s2 se referă la două obiecte diferite. Era similar cu declarația System.out.println(s1==s2);

Instrucțiunea System.out.println(s1.equals(s3)) va da răspunsul adevărat deoarece s1 și s3 se referă la același obiect. Era similar cu declarația, System.out.println(s1==s3);

Nu există o metodă egală în clasa Student. Prin urmare, egalii din clasa Object sunt apelați. True este afișat numai dacă referința la obiect indică același obiect.

Diferența dintre equals și hashCode în Java_Figura 02
Diferența dintre equals și hashCode în Java_Figura 02

Figura 02: Programul Java cu suprascris este egal cu

Conform programului de mai sus, metoda equals este suprascrisă. Un obiect este transmis metodei și este turnat de tip în Student. Apoi, valorile id sunt verificate. Dacă valorile id sunt similare, va returna true. Dacă nu, va reveni fals. Id-urile lui s1 și s2 sunt similare. Deci, se va imprima adevărat. ID-urile lui s1 și s3 sunt, de asemenea, similare, așa că se va afișa adevărat.

Ce este hashCode în Java?

HashCode este folosit în hashing pentru a decide în ce grup ar trebui să fie clasificat un obiect. Un grup de obiecte poate partaja același cod hash. O funcție de hashing corectă poate distribui uniform obiectele în diferite grupuri.

Un cod hash corect poate avea proprietăți după cum urmează. Să presupunem că există două obiecte ca obj1 și obj2. Dacă obj1.equals(obj2) este adevărat, atunci obj1.hashCode() este egal cu obj2.hashCode(). Dacă obj1.equals(obj2) este fals, nu este necesar ca obj1.hashCode() să nu fie egal cu obj2.hashCode(). Cele două obiecte inegale ar putea avea, de asemenea, același cod hash.

Diferența dintre equals și hashCode în Java_Figura 03
Diferența dintre equals și hashCode în Java_Figura 03

Figura 03: Clasa de studenți cu equals și hashCode

Diferența cheie între equals și hashCode în Java
Diferența cheie între equals și hashCode în Java

Figura 04: Programul principal

Clasa Student conține metodele equals și hashCode. Metoda equals din clasa Student va primi un obiect. Dacă obiectul este nul, va returna false. Dacă clasele obiectelor nu sunt aceleași, va returna false. Valorile id sunt verificate în ambele obiecte. Dacă sunt similare, va reveni adevărat. În caz contrar, va returna false.

În programul principal sunt create obiectele s1 și s2. Când apelați s1.equals(s2) va da true deoarece metoda equals este suprascrisă și verifică valorile id-ului celor două obiecte. Chiar dacă se referă la două obiecte, răspunsul este adevărat deoarece valorile id ale lui s1 și s2 sunt aceleași. Deoarece s1.equals(s2) este adevărat, codul hash al lui s1 și s2 ar trebui să fie egal. Imprimarea hashCode-ului s1 și s2 dă aceeași valoare. Metoda hashCode poate fi utilizată cu colecții precum HashMap.

Care este diferența dintre equals și hashCode în Java?

equal vs hashCode în Java

equals este o metodă în Java care acționează similar cu operatorul==, care este de a testa identitatea obiectului, mai degrabă decât egalitatea obiectului. hashCode este o metodă prin care o clasă descompune implicit sau explicit datele stocate într-o instanță a clasei într-o singură valoare hash.
Utilizare
Metoda equals este folosită pentru a compara două obiecte. Metoda este folosită în hashing pentru a decide în ce grup ar trebui plasat un obiect.

Rezumat – este egal cu codul hash în Java

Diferența dintre equals și hashCode în Java este că equals este folosit pentru a compara două obiecte, în timp ce hashCode este folosit în hashing pentru a decide în ce grup trebuie clasificat un obiect.

Recomandat: