Ključna razlika - jednako je u odnosu na hashCode u Javi
Jednakost je slična operateru ==, koji treba testirati identitet objekta, a ne jednakost objekta. HashCode je metoda kojom klasa implicitno ili eksplicitno raščlanjuje podatke pohranjene u instanci klase u jednu hash vrijednost, koja je 32-bitni cjeloviti znak. Ključna razlika između equals i hashCode u Javi je ta što se equals koristi za usporedbu dvaju objekata, dok hashCode služi za hashiranje da bi se odlučilo u koju će grupu objekt biti kategoriziran.
SADRŽAJ
1. Pregled i ključna razlika
2. Što je jednako u Javi
3. Što je hashCode u Javi
4. Usporedna usporedba - jednako u odnosu na hashCode u Javi u tabličnom obliku
5. Sažetak
Što je jednako u Javi?
Metoda jednaka koristi se za usporedbu dvaju objekata. Zadana metoda jednaka definirana je u klasi objekta. Ta je implementacija slična operateru ==. Dvije reference na objekt jednake su samo ako upućuju na isti objekt. Moguće je nadjačati metodu jednakosti.
Slika 01: Java program s jednakima
Izjava System.out.println (s1.equals (s2)) dat će odgovor netačno jer se s1 i s2 odnose na dva različita objekta. Bilo je slično izjavi, System.out.println (s1 == s2);
Izjava System.out.println (s1.equals (s3)) dat će odgovor istinito jer se s1 i s3 odnose na isti objekt. Bilo je slično izjavi, System.out.println (s1 == s3);
U razredu Student ne postoji jednaka metoda. Stoga se pozivaju jednaki u klasi Object. Tačno se prikazuje samo ako referenca objekta upućuje na isti objekt.
Slika 02: Java program s poništenim jednakima
Prema gore navedenom programu, metoda equals je nadjačana. Objekt se predaje metodi i on se ulijeva u Student. Zatim se provjeravaju vrijednosti id. Ako su vrijednosti id slične, vratit će true. Ako nije, vratit će se false. ID-ovi s1 i s2 su slični. Dakle, ispisat će se istinito. ID-ovi s1 i s3 također su slični, pa će se ispisati točno.
Što je hashCode u Javi?
HashCode koristi se za raspršivanje da bi se odlučilo u koju će grupu objekt biti kategoriziran. Skupina objekata može dijeliti isti hashCode. Ispravna funkcija raspršivanja može ravnomjerno rasporediti objekte u različite skupine.
Ispravan hashCode može imati svojstva kako slijedi. Pretpostavimo da postoje dva objekta kao što su obj1 i obj2. Ako je obj1.equals (obj2) točno, tada je obj1.hashCode () jednako obj2.hashCode (). Ako je obj1.equals (obj2) netačno, nije neophodno da obj1.hashCode () nije jednako obj2.hashCode (). Dva nejednaka objekta također mogu imati isti hashCode.
Slika 03: Razred učenika s jednakostima i hashCode
Slika 04: Glavni program
Predavanje Student sadrži metode jednakosti i hashCode. Metoda jednakih u razredu Student primit će objekt. Ako je objekt null, vratit će false. Ako klase objekata nisu iste, vratit će se false. Vrijednosti id provjeravaju se u oba objekta. Ako su slični, vratit će se istina. Inače će se vratiti lažno.
U glavnom programu stvaraju se objekti s1 i s2. Prilikom pozivanja s1.equals (s2) dat će true jer je metoda equals nadjačana i provjerava vrijednosti id dvaju objekata. Iako se odnose na dva objekta, odgovor je istinit jer su id vrijednosti s1 i s2 iste. Kako je s1.equals (s2) istinito, hashCode s1 i s2 trebao bi biti jednak. Ispis hashCodea s1 i s2 daje istu vrijednost. Metoda hashCode može se koristiti s zbirkama kao što je HashMap.
Koja je razlika između equals i hashCode u Javi?
Diff Article Sredina prije tablice
jednako vs hashCode u Javi |
|
equals je metoda u Javi koja djeluje slično operateru ==, a to je testiranje identiteta objekta, a ne jednakosti objekta. | hashCode je metoda kojom klasa implicitno ili eksplicitno razgrađuje podatke pohranjene u instanci klase u jednu hash vrijednost. |
Upotreba | |
Metoda jednaka koristi se za usporedbu dva objekta. | Metoda se koristi za raspršivanje da bi se odlučilo u koju skupinu objekt treba smjestiti. |
Sažetak - jednako u odnosu na hashCode u Javi
Razlika u equals i hashCode u Javi je u tome što se equals koristi za usporedbu dvaju objekata, dok hashCode u hashiranju donosi odluku u koju bi grupu objekt trebao biti kategoriziran.