Rovná sa je podobná operátoru ==, ktorý má skôr testovať identitu objektu ako rovnosť objektu. 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 rovným a hashCode v Jáva je to equals sa používa na porovnanie dvoch objektov, zatiaľ čo hashCode sa používa pri hashovaní na rozhodnutie, do ktorej skupiny by mal byť objekt zaradený.
1. Prehľad a kľúčový rozdiel
2. Čo sa rovná Java
3. Čo je hashCode v Jave
4. Porovnanie vedľa seba - sa rovná verzii hashCode v Jave v tabuľkovej forme
5. Zhrnutie
Rovnaká metóda sa používa na porovnanie dvoch objektov. Predvolená metóda rovná sa je definovaná v triede objektov. Táto implementácia je podobná operácii ==. Dva odkazy na objekty sú rovnaké, iba ak smerujú na ten istý objekt. Je možné potlačiť metódu rovnosti.
Obrázok 01: Program Java s rovnakými hodnotami
Príkaz System.out.println (s1.equals (s2)) dá odpoveď false, pretože s1 a s2 sa vzťahujú na dva rôzne objekty. Bolo to podobné tvrdeniu System.out.println (s1 == s2);
Príkaz System.out.println (s1.equals (s3)) dá odpoveď pravdivú, pretože s1 a s3 odkazujú na ten istý objekt. Bolo to podobné tvrdeniu System.out.println (s1 == s3);
V triede Student neexistuje metóda rovnosti. Preto sa volá rovnica v triede Object. True sa zobrazuje iba vtedy, ak odkaz na objekt ukazuje na ten istý objekt.
Obrázok 02: Program Java s prepísaným sa rovná
Podľa vyššie uvedeného programu je metóda rovnosti rovnaká. Objekt sa odovzdá metóde a typ sa odovzdá študentovi. Potom sa skontrolujú hodnoty id. Ak sú hodnoty id podobné, vráti sa true. Ak nie, vráti sa nesprávne. ID s1 a s2 sú podobné. Takže sa vytlačí pravda. Ids s1 a s3 sú tiež podobné, takže sa vytlačí true.
HashCode sa používa pri hashovaní na rozhodnutie, do ktorej skupiny by mal byť objekt zaradený. Skupina objektov môže zdieľať rovnaký hashCode. Správna funkcia hashovania dokáž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 hodnota obj1.equals (obj2) pravdivá, potom obj1.hashCode () sa rovná obj2.hashCode (). Ak je obj1.equals (obj2) nepravdivý, nie je potrebné, aby sa obj1.hashCode () nerovnal obj2.hashCode (). Dva nerovnaké objekty môžu mať tiež rovnaký hashCode.
Obrázok 03: Študentská trieda sa rovná a hashCode
Obrázok 04: Hlavný program
Trieda Student obsahuje metódy equals a hashCode. Rovnaká metóda v triede Student dostane objekt. Ak je objekt null, vráti sa false. Ak triedy objektov nie sú rovnaké, vráti hodnotu false. Hodnoty id sa kontrolujú v oboch objektoch. Ak sú podobné, vráti sa pravda. Inak to vráti nepravdivé.
V hlavnom programe sa vytvárajú objekty s1 a s2. Pri volaní s1.equals (s2) sa splní, pretože metóda equals je potlačená a kontroluje hodnoty id 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 mali byť rovnaké. Tlač hashCode s1 a s2 dáva rovnakú hodnotu. Metódu hashCode je možné použiť s kolekciami, napríklad HashMap.
sa rovná Java verzii hashCode v Jave | |
equals je metóda v Java, ktorá sa chová podobne ako operátor ==, ktorá má skôr testovať identitu objektu než rovnosť objektu. | hashCode je metóda, pomocou ktorej trieda implicitne alebo explicitne rozdeľuje údaje uložené v inštancii triedy na jedinú hodnotu hash. |
používanie | |
Metóda sa rovná sa používa na porovnanie dvoch objektov. | Metóda sa používa pri hashovaní na rozhodnutie, do ktorej skupiny by mal byť objekt zaradený. |
Rozdiel v parametroch equals a hashCode v Java je ten, že sa rovná na porovnanie dvoch objektov, zatiaľ čo hashCode sa používa pri hashovaní na rozhodnutie, do ktorej skupiny by mal byť objekt zaradený..
1. „Java HashCode ().“ Wikipedia, Wikimedia Foundation, 17. februára 2018. K dispozícii tu
2.Harold, Elliotte Rusty. „Rovnaká metóda ().“ Metóda Equals (), 2. novembra 2001. K dispozícii tu