Az egyenlő hasonlít a == operátorhoz, amely inkább az objektum azonosságának tesztelésére szolgál, mint a tárgy egyenlőségére. A hashCode olyan módszer, amellyel az osztály implicit módon vagy explicit módon bontja az osztály példányában tárolt adatokat egyetlen hash-értékre, amely egy 32 bites aláírt egész szám. Az kulcs különbség az egyenlő és a hashCode között Jáva az, hogy a az egyenlőkkel összehasonlítják a két objektumot, míg a hashCode azt a hash-ot használják, hogy eldöntsék, melyik csoportba sorolják az objektumokat.
1. Áttekintés és a legfontosabb különbség
2. Mi egyenlő a Java-ban
3. Mi a hashCode a Java-ban?
4. Side by Side Comparison - megegyezik a hashCode kóddal Java-ban táblázatos formában
5. Összegzés
Az egyenlő módszer két objektum összehasonlítására szolgál. Az alapértelmezett egyenlő módszert az objektum osztály határozza meg. Ez a megvalósítás hasonló a == operátorhoz. A két objektumhivatkozás csak akkor azonos, ha ugyanazon objektumra mutatnak. Az egyenlő módszer felülbírálható.
01. ábra: Java program egyenlővel
A System.out.println (s1.equals (s2)) utasítás hamis választ ad, mivel az s1 és s2 két különálló objektumra utal. Hasonló volt a System.out.println állításhoz (s1 == s2);
A System.out.println (s1.equals (s3)) állítás valódi választ fog adni, mivel az s1 és az s3 ugyanazon objektumra utal. Hasonló volt a System.out.println állításhoz (s1 == s3);
A Student osztályban nincs egyenlő módszer. Ezért hívjuk az Object osztályban lévő egyenlőket. Az igaz csak akkor jelenik meg, ha az objektumhivatkozás ugyanarra az objektumra mutat.
02 ábra: Java program felülbírált egyenlőkkel
A fenti program szerint az egyenlő módszer felülbírálásra került. Egy objektumot továbbítanak a metódushoz, és beírják a Student-be. Ezután ellenőrzik az id értékeket. Ha az id értékek hasonlóak, akkor az igaz lesz. Ha nem, akkor hamis lesz. Az s1 és s2 azonosítói hasonlóak. Tehát igaz lesz. Az s1 és az s3 azonosítói is hasonlóak, tehát igaz lesz.
A hashCode használatával a hash eldönti, hogy melyik csoportba kell besorolni az objektumot. Egy objektumcsoport megoszthatja ugyanazt a hash-kódot. A helyes kivonási funkció egyenletesen oszthatja el az objektumokat különböző csoportokba.
A helyes hash-kód tulajdonságai a következők lehetnek. Tegyük fel, hogy két objektum létezik, mint obj1 és obj2. Ha az obj1.equals (obj2) igaz, akkor az obj1.hashCode () egyenlő az obj2.hashCode () értékkel. Ha az obj1.equals (obj2) hamis, akkor nem szükséges, hogy az obj1.hashCode () nem egyenlő az obj2.hashCode () értékkel. Lehet, hogy a két egyenlőtlen objektumnak azonos hash-kódja van.
03. ábra: Diákosztály az egyenlővel és a hash-kóddal
04. ábra: Főprogram
A Student osztály tartalmazza az egyenlő és a hashCode módszereket. Az egyenlő módszer a hallgató osztályban kap egy objektumot. Ha az objektum null, akkor hamis lesz. Ha az objektumok osztályai nem azonosak, akkor hamis lesz. Az id értékeket mindkét objektum ellenőrzi. Ha hasonlóak, akkor igaznak bizonyul. Máskülönben hamis lesz.
A főprogramban az s1 és s2 objektumok készülnek. Az s1.equals (s2) hívásakor igaz lesz, mert az equals metódust felülbírálják, és ellenõrzik a két objektum id értékét. Annak ellenére, hogy két objektumra vonatkoznak, a válasz igaz, mert az s1 és s2 id értékei azonosak. Mivel az s1.equals (s2) igaz, az s1 és s2 hashCode-jának egyenlőnek kell lennie. Az s1 és az s2 hashCode kinyomtatása ugyanazt az értéket adja. A hashCode módszer használható olyan gyűjteményeknél, mint a HashMap.
megegyezik a Java hashCode-jával | |
az equals egy olyan módszer a Java-ban, amely hasonlóan működik a == operátorral, azaz az objektumazonosság tesztelése helyett az objektum egyenlősége. | A hashCode olyan módszer, amellyel az osztály implicit vagy explicit módon lebontja az osztály példányában tárolt adatokat egyetlen hash-értékre. |
Használat | |
Az egyenlő módszer két objektum összehasonlítására szolgál. | A módszer arra szolgál, hogy a kivonatolás során eldöntsék, melyik csoportba kell helyezni az objektumot. |
Az egyenlőség és a hashCode különbsége a Java-ban az, hogy az egyenlőket két objektum összehasonlítására használják, míg a hashCode-t a hash-ban használják annak eldöntésére, hogy melyik csoportba kell besorolni az objektumot.
1. “Java HashCode ().” Wikipedia, Wikimedia Alapítvány, 2018. február 17. Elérhető itt
2.Harold, Elliotte Rusty. „Az egyenlő () módszer.” Az Equals () módszer, 2001. november 2. Itt érhető el