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.
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.
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.
Obrázok 03: Študentská trieda s rovnosťou a hashCode
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ý.