Diferența cheie - egal cu hashCode în Java
Egalul este 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, care este un întreg semnat pe 32 de biți. Diferența cheie între egali și hashCode în Java este că egalii sunt folosiți pentru a compara două obiecte, în timp ce hashCode este utilizat în hashing pentru a decide în ce grup ar trebui clasificat un obiect.
CUPRINS
1. Prezentare generală și diferența cheie
2. Ce este egal în Java
3. Ce este hashCode în Java
4. Comparare side by side - egal vs hashCode în Java în formă tabelară
5. Rezumat
Ce este egal în Java?
Metoda egală este utilizată pentru a compara două obiecte. Metoda implicită egală este definită în clasa obiect. Această implementare este similară cu operatorul ==. Cele două referințe de obiect sunt egale numai dacă sunt îndreptate către același obiect. Este posibil să înlocuiți metoda egală.
Figura 01: Program Java cu egal
Afirmația System.out.println (s1.equals (s2)) va da răspunsul fals deoarece s1 și s2 se referă la două obiecte diferite. A fost similar cu enunțul, System.out.println (s1 == s2);
Declarația System.out.println (s1.equals (s3)) va da răspunsul adevărat deoarece s1 și s3 se referă la același obiect. A fost similar cu enunțul, System.out.println (s1 == s3);
Nu există o metodă egală în clasa Student. Prin urmare, egalul din clasa Object este numit. Adevărat este afișat numai dacă referința obiectului indică același obiect.
Figura 02: Programul Java cu suprascris este egal
Conform programului de mai sus, metoda egală este anulată. Un obiect este trecut la metodă și este tipat aruncat către Student. Apoi, valorile id sunt verificate. Dacă valorile id sunt similare, va reveni adevărat. Dacă nu, va reveni fals. ID-urile s1 și s2 sunt similare. Deci, se va imprima adevărat. ID-urile s1 și s3 sunt, de asemenea, similare, așa că va imprima adevărat.
Ce este hashCode în Java?
Codul hash este utilizat în hashing pentru a decide în ce grup ar trebui clasificat un obiect. Un grup de obiecte poate partaja același hashCode. O funcție de hash corectă poate distribui uniform obiecte în diferite grupuri.
Un hashCode corect poate avea proprietăți după cum urmează. Să presupunem că există două obiecte ca obiect1 ș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 hashCode.
Figura 03: Clasa elevului cu egal și cod hash
Figura 04: Programul principal
Clasa Student conține metode egale și hashCode. Metoda egală din clasa Student va primi un obiect. Dacă obiectul este nul, acesta va reveni fals. Dacă clasele obiectelor nu sunt aceleași, va reveni fals. Valorile id sunt verificate în ambele obiecte. Dacă sunt similare, va reveni adevărat. Altfel, va fi fals.
În programul principal, sunt create obiectele s1 și s2. La apelarea s1.equals (s2) va da true deoarece metoda egal este suprascrisă și verifică valorile id ale celor două obiecte. Chiar dacă se referă la două obiecte, răspunsul este adevărat deoarece valorile id ale s1 și s2 sunt aceleași. Deoarece s1.equals (s2) este adevărat, hashCode-ul lui s1 și s2 ar trebui să fie egal. Imprimarea codului hash de s1 și s2 oferă aceeași valoare. Metoda hashCode poate fi utilizată cu colecții precum HashMap.
Care este diferența dintre egal și cod hash în Java?
Difuzarea articolului din mijloc înainte de tabel
este egal cu hashCode în Java |
|
egal 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 egală este utilizată pentru a compara două obiecte. | Metoda este utilizată în hashing pentru a decide în ce grup ar trebui plasat un obiect. |
Rezumat - egal cu hashCode în Java
Diferența dintre egali și hashCode în Java constă în faptul că egal este folosit pentru a compara două obiecte, în timp ce hashCode este utilizat în hashing pentru a decide în ce grup ar trebui clasificat un obiect.