Rozdiel medzi rovná a hashCode v Jave

Kľúčový rozdiel - rovná sa vs hashCode v systéme Windows Jáva
 

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ý.

OBSAH

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

Čo sa rovná Java?

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.

Čo je hashCode v Jave?

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.

Aký je rozdiel medzi rovnakými a hashCode v Jave?

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ý.

Zhrnutie - sa rovná vs hashCode v systéme Windows Jáva

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ý..

referencie:

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