Különbség az egyenlő és a hashCode között Java nyelven

Tartalomjegyzék:

Különbség az egyenlő és a hashCode között Java nyelven
Különbség az egyenlő és a hashCode között Java nyelven

Videó: Különbség az egyenlő és a hashCode között Java nyelven

Videó: Különbség az egyenlő és a hashCode között Java nyelven
Videó: Equals and Hashcode Contract in Java [Important Java Interview Question] | Code Decode 2024, November
Anonim

Kulcskülönbség – megegyezik a Java hashCode-jával

Az egyenlő hasonló az==operátorhoz, amely az objektumok azonosságának tesztelésére szolgál, nem pedig az objektumok egyenlőségére. A hashCode egy olyan módszer, amellyel egy osztály implicit vagy explicit módon lebontja az osztály példányában tárolt adatokat egyetlen hash értékre, amely egy 32 bites előjelű egész szám. A legfontosabb különbség az egyenlő és a hashCode között Javaban az, hogy az egyenlő két objektum összehasonlítására szolgál, míg a hashCode a hashálás során annak eldöntésére, hogy az objektumot melyik csoportba kell besorolni.

Mi egyenlő a Java-ban?

Az egyenlő módszer két objektum összehasonlítására szolgál. Az alapértelmezett egyenlő metódus az objektumosztályban van definiálva. Ez a megvalósítás hasonló az==operátorhoz. A két objektumhivatkozás csak akkor egyenlő, ha ugyanarra az objektumra mutat. Lehetőség van az egyenlő metódus felülbírálására.

Különbség az egyenlő és a hashCode között Java nyelven
Különbség az egyenlő és a hashCode között Java nyelven

01. ábra: Java program egyenlő

A System.out.println(s1.equals(s2)) utasítás hamis választ ad, mert az s1 és s2 két különböző objektumra utal. Hasonló volt a System.out.println(s1==s2); utasításhoz

A System.out.println(s1.equals(s3)) utasítás igaz választ ad, mivel az s1 és az s3 ugyanarra az objektumra utal. Hasonló volt a System.out.println(s1==s3); utasításhoz

Nincs egyenlő módszer a Diák osztályban. Ezért az Object osztályban az egyenlőket hívjuk. Az igaz csak akkor jelenik meg, ha az objektumhivatkozás ugyanarra az objektumra mutat.

Különbség az egyenlő és a hashCode között a Java-ban_Figure 02
Különbség az egyenlő és a hashCode között a Java-ban_Figure 02

02. ábra: Java program felülírással egyenlő

A fenti program szerint az egyenlő metódus felülírva van. Egy objektumot a rendszer átad a metódusnak, és típusát a diáknak adja át. Ezután az id értékeket ellenőrizzük. Ha az id értékek hasonlóak, akkor igazat ad vissza. Ha nem, akkor hamis értéket ad vissza. Az s1 és s2 azonosítója hasonló. Tehát igaz lesz. Az s1 és s3 azonosítója is hasonló, így igazat fog nyomtatni.

Mi a hashCode a Java-ban?

A hashCode a kivonatolás során annak eldöntésére szolgál, hogy egy objektumot melyik csoportba kell besorolni. Az objektumok egy csoportja megoszthatja ugyanazt a hashCode-ot. A helyes kivonatolási függvény egyenletesen oszthatja el az objektumokat különböző csoportokba.

A helyes hashCode a következő tulajdonságokkal rendelkezhet. Tegyük fel, hogy van két objektum: obj1 és obj2. Ha az obj1.equals(obj2) igaz, akkor az obj1.hashCode() egyenlő az obj2.hashCode(). Ha az obj1.equals(obj2) értéke hamis, akkor nem szükséges, hogy az obj1.hashCode() ne egyenlő legyen az obj2.hashCode() értékkel. A két nem egyenlő objektumnak is lehet ugyanaz a hashCode.

Különbség az egyenlő és a hashCode között a Java-ban_Figure 03
Különbség az egyenlő és a hashCode között a Java-ban_Figure 03

03. ábra: Diákosztály egyenlőkkel és hashCode-dal

Kulcskülönbség az egyenlő és a hashCode között Java nyelven
Kulcskülönbség az egyenlő és a hashCode között Java nyelven

04. ábra: Fő program

A Student osztály tartalmazza az egyenlő és hashCode metódusokat. A Student osztályban az egyenlő metódus kap egy objektumot. Ha az objektum nulla, akkor false értéket ad vissza. Ha az objektumok osztályai nem azonosak, akkor false értéket ad vissza. Az id értékek mindkét objektumban ellenőrzésre kerülnek. Ha hasonlóak, akkor igaz lesz. Ellenkező esetben hamis értéket ad vissza.

A főprogramban az s1 és s2 objektumok jönnek létre. Az s1.equals(s2) meghívásakor true értéket ad, mert az egyenlő metódus felül van írva, és ellenőrzi a két objektum id értékét. Annak ellenére, hogy két objektumra hivatkoznak, a válasz igaz, mert az s1 és s2 id értéke megegyezik. Mivel az s1.equals(s2) igaz, az s1 és s2 hashCode-jának egyenlőnek kell lennie. Az s1 és s2 hashCode kinyomtatása ugyanazt az értéket adja. A hashCode metódus olyan gyűjteményekkel használható, mint például a HashMap.

Mi a különbség az egyenlő és a hashCode között Javaban?

egyenlő vs hashCode Java-ban

Az equals egy olyan Java metódus, amely az==operátorhoz hasonlóan működik, ami az objektumok azonosságának tesztelésére szolgál, nem pedig az objektumok egyenlőségére. A hashCode egy olyan módszer, amellyel egy osztály implicit vagy explicit módon egyetlen hash értékre bontja az osztály példányában tárolt adatokat.
Használat
Az egyenlő módszert két objektum összehasonlítására használják. A metódust a hashelés során használják annak eldöntésére, hogy egy objektumot melyik csoportba kell helyezni.

Összefoglaló – egyenlő a hashCode-val a Java nyelvben

A Javaban az egyenlő és a hashCode közötti különbség az, hogy az egyenlő két objektum összehasonlítására szolgál, míg a hashCode a hashálás során annak eldöntésére, hogy egy objektumot melyik csoportba kell besorolni.

Ajánlott: