Key Difference - egyenlő vs hashCode a Java-ban
Az egyenlő hasonló a == operátorhoz, amelynek célja az objektum azonosságának tesztelése, nem pedig az objektum egyenlősége. A hashCode olyan módszer, amellyel egy osztály implicit vagy explicit módon lebontja az osztály egy példányában tárolt adatokat egyetlen hash értékre, amely egy 32 bites előjelű egész szám. A Java-ban az egyenlő és a hashCode közötti kulcsfontosságú különbség az, hogy az egyenlőt két objektum összehasonlítására használják, míg a hashCode-ot a hash-ban használják annak eldöntésére, hogy egy objektum melyik csoportba sorolható.
TARTALOM
1. Áttekintés és kulcskülönbség
2. Mi egyenlő a Java-ban
3. Mi a hashCode a Java-ban
4. Egymás mellett történő összehasonlítás - egyenlő vs hashCode a Java-ban táblázatos formában
5. Összegzés
Mi az egyenlő a Java-ban?
Az egyenlő módszer két objektum összehasonlítására szolgál. Az alapértelmezett egyenlő módszer az objektumosztályban van meghatározva. Ez a megvalósítás hasonló a == operátorhoz. A két objektumreferencia csak akkor egyenlő, ha ugyanarra az objektumra mutatnak. Lehetséges felülírni az egyenlő módszert.
01. ábra: Java program egyenlővel
A System.out.println (s1.equals (s2)) állítás hamis választ ad, mert az s1 és az s2 két különböző objektumra utal. Hasonló volt a System.out.println (s1 == s2) állításhoz;
A System.out.println (s1.equals (s3)) állítás igazat ad a válaszra, mert s1 és s3 ugyanarra az objektumra utalnak. Hasonló volt a System.out.println (s1 == s3) állításhoz;
A Student osztályban nincs egyenlő módszer. Ezért az Object osztályban szereplő egyenlőket hívjuk meg. Az Igaz csak akkor jelenik meg, ha az objektum hivatkozása ugyanarra az objektumra mutat.
02. ábra: Java program felülbírálva egyenlő
A fenti program szerint az egyenlő módszer felülírásra kerül. Az objektum átkerül a metódushoz, és a típus átadódik a Student-nak. Ezután ellenőrizzük az id értékeket. Ha az id értékek hasonlóak, akkor igaz lesz. Ha nem, akkor hamis értéket ad vissza. Az s1 és az s2 azonosítói hasonlóak. Tehát igaz lesz. Az s1 és az s3 azonosítói is hasonlóak, ezért igazra fog nyomtatni.
Mi a hashCode a Java-ban?
A hashCode-t a hash-ban használják annak eldöntésére, hogy egy objektum melyik csoportba sorolható. Objektumok csoportja ugyanazt a hashCode-ot oszthatja meg. A helyes hash függvény egyenletesen oszthatja el az objektumokat különböző csoportokba.
A helyes hashCode tulajdonságai a következők lehetnek. Tegyük fel, hogy két objektum van, 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 () ne egyenlő az obj2.hashCode () értékkel. Lehet, hogy a két egyenlőtlen objektumnak ugyanaz a hashCode-ja.
03. ábra: Diák osztály egyenlő és hashCode-tal
04. ábra: Fő program
A Student osztály az equals és a hashCode módszereket tartalmazza. A Student osztályban az egyenlő módszer objektumot fog kapni. Ha az objektum null, akkor hamis értéket ad vissza. Ha az objektumok osztályai nem azonosak, akkor hamis értéket ad vissza. Az id értékeket mindkét objektumban ellenőrizzük. Ha hasonlóak, akkor igaz lesz. Egyébként hamis lesz.
A fő programban az s1 és s2 objektumok jönnek létre. Az s1.equals (s2) meghívásakor igaz lesz, mert az equals metódust felülbírálják, és ellenőrzi a két objektum id értékeit. Annak ellenére, hogy két objektumra hivatkoznak, a válasz igaz, mert az s1 és az s2 id értéke megegyezik. Mivel az s1.equals (s2) igaz, az s1 és s2 hashCode-nak egyenlőnek kell lennie. Az s1 és s2 hashCode nyomtatása ugyanazt az értéket adja. A hashCode metódus olyan gyűjteményekhez használható, mint a HashMap.
Mi a különbség az egyenlő és a hashCode között a Java-ban?
Különböző cikk a táblázat előtt
egyenlő vs hashCode Java-ban |
|
Az equals egy olyan módszer a Java-ban, amely hasonlóan működik, mint az == operátor, amelynek célja az objektum azonosságának tesztelése, nem pedig az objektum egyenlősége. | A hashCode egy olyan módszer, amellyel egy osztály implicit vagy explicit módon egyetlen hash értékre bontja az osztály egy példányában tárolt adatokat. |
Használat | |
Az egyenlő módszer két objektum összehasonlítására szolgál. | A módszert a kivonatolás során használják annak eldöntésére, hogy egy objektum melyik csoportba kerüljön. |
Összegzés - egyenlő vs hashCode a Java-ban
A Java-ban az egyenlőség és a hashCode különbsége az, hogy az egyenlőt két objektum összehasonlítására használják, míg a hashCode-ot a hash-ban használják annak eldöntésére, hogy egy objektum melyik csoportba sorolható.