Rozdiel Medzi Equals A HashCode V Jave

Obsah:

Rozdiel Medzi Equals A HashCode V Jave
Rozdiel Medzi Equals A HashCode V Jave

Video: Rozdiel Medzi Equals A HashCode V Jave

Video: Rozdiel Medzi Equals A HashCode V Jave
Video: Miky Mora - Rozdiely + Momo a Suchý Pes 2024, November
Anonim

Kľúčový rozdiel - v jazyku Java sa rovná vs hashCode

Rovnica je podobná operátoru ==, ktorý má testovať skôr totožnosť objektu ako rovnosť objektov. HashCode je metóda, ktorou trieda implicitne alebo explicitne rozdeľuje údaje uložené v inštancii triedy na jednu hash hodnotu, čo je 32-bitové celé číslo so znamienkom. Kľúčový rozdiel medzi equals a hashCode v Jave je ten, že equals sa používa na porovnanie dvoch objektov, zatiaľ čo hashCode sa používa pri hašovaní na rozhodnutie, do ktorej skupiny by mal byť objekt kategorizovaný.

OBSAH

1. Prehľad a kľúčový rozdiel

2. Čo je rovnocenné v Jave

3. Čo je hashCode v Jave

4. Porovnanie vedľa seba - rovná sa hashCode v Jave v tabuľkovej forme

5. Zhrnutie

Čo sa rovná v Jave?

Metóda equals sa používa na porovnanie dvoch objektov. Predvolená metóda rovná sa je definovaná v triede objektov. Táto implementácia je podobná operátoru ==. Dva odkazy na objekty sú rovnaké, iba ak smerujú na rovnaký objekt. Je možné prepísať metódu rovnosti.

Rozdiel medzi equals a hashCode v Jave
Rozdiel medzi equals a hashCode v Jave

Obrázok 01: Program Java s ekvivalentom

Príkaz System.out.println (s1.equals (s2)) dá odpoveď false, pretože s1 a s2 odkazujú na dva rôzne objekty. Bolo to podobné ako vyhlásenie, System.out.println (s1 == s2);

Príkaz System.out.println (s1.equals (s3)) dá odpoveď pravdivú, pretože s1 a s3 odkazujú na rovnaký objekt. Bolo to podobné ako vyhlásenie, System.out.println (s1 == s3);

V triede Student neexistuje metóda rovná sa. Preto sa volá rovná sa v triede Object. True sa zobrazí, iba ak odkaz na objekt smeruje na rovnaký objekt.

Rozdiel medzi equals a hashCode v Java Figure 02
Rozdiel medzi equals a hashCode v Java Figure 02

Obrázok 02: Program Java s prepísaním rovná sa

Podľa vyššie uvedeného programu je metóda equals prepísaná. Objekt je odovzdaný metóde a je typom odovzdaný študentovi. Potom sa skontrolujú id hodnoty. Ak sú hodnoty id podobné, vráti sa hodnota true. Ak nie, vráti sa nepravdivé. ID id s1 a s2 sú podobné. Bude sa teda tlačiť pravdivo. Identifikátory s1 a s3 sú tiež podobné, takže sa bude tlačiť ako pravdivé.

Čo je hashCode v Jave?

HashCode sa používa pri hašovaní pri rozhodovaní, do ktorej skupiny by sa mal objekt kategorizovať. Skupina objektov môže zdieľať rovnaký hashCode. Správna funkcia hash môže rovnomerne rozdeliť objekty do rôznych skupín.

Správny hashCode môže mať nasledujúce vlastnosti. Predpokladajme, že existujú dva objekty ako obj1 a obj2. Ak je obj1.equals (obj2) pravda, potom obj1.hashCode () sa rovná obj2.hashCode (). Ak je obj1.equals (obj2) nepravdivé, nie je potrebné, aby sa obj1.hashCode () nerovnalo obj2.hashCode (). Dva nerovné objekty môžu mať tiež rovnaký hashCode.

Rozdiel medzi equals a hashCode v Java Figure 03
Rozdiel medzi equals a hashCode v Java Figure 03

Obrázok 03: Študentská trieda s rovnosťou a hashCode

Kľúčový rozdiel medzi equals a hashCode v Jave
Kľúčový rozdiel medzi equals a hashCode v Jave

Obrázok 04: Hlavný program

Trieda Student obsahuje metódy equals a hashCode. Metóda equals v triede Student dostane predmet. Ak má objekt hodnotu null, vráti hodnotu false. Ak triedy objektov nie sú rovnaké, vráti hodnotu false. Hodnoty id sa kontrolujú v obidvoch objektoch. Ak sú si podobné, vráti sa to pravda. Inak sa vráti nepravdivé.

V hlavnom programe sa vytvárajú objekty s1 a s2. Pri volaní s1.equals (s2) dá true, pretože metóda equals je prepísaná a kontroluje id hodnoty týchto dvoch objektov. Aj keď odkazujú na dva objekty, odpoveď je pravdivá, pretože hodnoty id s1 a s2 sú rovnaké. Pretože s1.equals (s2) je pravda, hashCode s1 a s2 by mal byť rovnaký. Tlač hashCode s1 a s2 dáva rovnakú hodnotu. Metódu hashCode je možné použiť s kolekciami, ako je napríklad HashMap.

Aký je rozdiel medzi equals a hashCode v Jave?

Rozdielny článok v strede pred tabuľkou

sa rovná vs hashCode v Jave

equals je metóda v Jave, ktorá funguje podobne ako operátor ==, ktorá spočíva v testovaní identity objektu a nie rovnosti objektu. hashCode je metóda, ktorou trieda implicitne alebo explicitne rozdeľuje údaje uložené v inštancii triedy na jednu hash hodnotu.
Využitie
Metóda equals sa používa na porovnanie dvoch objektov. Metóda sa používa pri hašovaní pri rozhodovaní, do ktorej skupiny sa má objekt umiestniť.

Zhrnutie - rovná sa hashCode v Jave

Rozdiel medzi equals a hashCode v Jave je v tom, že equals sa používa na porovnanie dvoch objektov, zatiaľ čo hashCode sa používa pri hašovaní pri rozhodovaní, do ktorej skupiny by mal byť objekt kategorizovaný.

Odporúčaná: