Ključna razlika - enako kot hashCode v Javi
Enako je podobno operaterju ==, ki naj bi preizkusil identiteto predmeta in ne enakost objektov. HashCode je metoda, s katero razred implicitno ali eksplicitno razdeli podatke, shranjene v primerku razreda, v eno zgoščeno vrednost, ki je 32-bitno podpisano celo število. Ključna razlika med enaki in hashCode v Javi je ta, da se equals uporablja za primerjavo dveh predmetov, hashCode pa se uporablja za razprševanje, da se odloči, v katero skupino naj bo objekt kategoriziran.
VSEBINA
1. Pregled in ključna razlika
2. Kaj je enako v Javi
3. Kaj je hashCode v Javi
4. Vzporedna primerjava - enako kot hashCode v Javi v tabelarni obliki
5. Povzetek
Kaj je enako v Javi?
Za primerjavo dveh predmetov se uporablja metoda enak. Privzeta enaka metoda je definirana v razredu predmeta. Ta izvedba je podobna operaterju ==. Dva sklica na objekt sta enaka le, če usmerjata na isti objekt. Možno je preglasiti metodo enakosti.
Slika 01: Java program z enakimi
Stavek System.out.println (s1.equals (s2)) bo dal odgovor napačen, ker se s1 in s2 nanašata na dva različna predmeta. Bilo je podobno izjavi System.out.println (s1 == s2);
Stavek System.out.println (s1.equals (s3)) bo dal odgovor res, ker se s1 in s3 nanašata na isti objekt. Bilo je podobno izjavi System.out.println (s1 == s3);
V razredu študentov ni enake metode. Zato se pokličejo enaki v razredu Object. True se prikaže le, če referenca predmeta kaže na isti predmet.
Slika 02: Program Java z razveljavljenimi enakimi
V skladu z zgornjim programom je metoda enakov razveljavljena. Predmet se posreduje metodi in se vnese v ukaz Študent. Nato se preverijo vrednosti id. Če so vrednosti id podobne, bo vrnil true. V nasprotnem primeru se vrne false. ID-ja s1 in s2 sta podobna. Torej bo natisnjeno res. ID-ji s1 in s3 sta si prav tako podobni, zato bo natisnjeno res.
Kaj je hashCode v Javi?
HashCode se uporablja pri zgoščevanju, da se odloči, v katero skupino naj bo objekt kategoriziran. Skupina predmetov lahko deli isto hashCode. Pravilna funkcija zgoščevanja lahko enakomerno porazdeli predmete v različne skupine.
Pravilna hashCode ima lahko naslednje lastnosti. Predpostavimo, da obstajata dva predmeta kot obj1 in obj2. Če obj1.equals (obj2) drži, je obj1.hashCode () enako obj2.hashCode (). Če je obj1.equals (obj2) false, ni nujno, da obj1.hashCode () ni enak obj2.hashCode (). Dva neenaka predmeta imata lahko tudi isto hashCode.
Slika 03: Študentski razred z enakimi in hashCode
Slika 04: Glavni program
Študentski razred vsebuje metode equals in hashCode. Metoda enako v razredu Študent bo prejela predmet. Če je objekt ničen, bo vrnil false. Če razredi predmetov niso enaki, bo vrnil false. Vrednosti id se preverjajo v obeh objektih. Če so si podobni, se bo to resnično uresničilo. V nasprotnem primeru se bo vrnilo false.
V glavnem programu se ustvarijo predmeti s1 in s2. Ko kličete s1.equals (s2), bo res, ker je metoda equals razveljavljena in preverja vrednosti id dveh predmetov. Čeprav se nanašata na dva predmeta, je odgovor resničen, ker sta vrednosti id s1 in s2 enaki. Ker s1.equals (s2) drži, mora biti hashCode s1 in s2 enak. Tiskanje hashCode s1 in s2 daje enako vrednost. Metodo hashCode je mogoče uporabiti z zbirkami, kot je HashMap.
Kakšna je razlika med enakimi in hashCode v Javi?
Diff Article Sredina pred mizo
je enako v primerjavi z hashCode v Javi |
|
equals je metoda v Javi, ki deluje podobno kot operator ==, ki je preizkus identitete predmeta in ne enakosti objekta. | hashCode je metoda, s katero razred implicitno ali eksplicitno razbije podatke, shranjene v primerku razreda, v eno zgoščeno vrednost. |
Uporaba | |
Metoda enaka se uporablja za primerjavo dveh predmetov. | Metoda se uporablja pri zgoščevanju, da se odloči, v katero skupino naj se objekt uvrsti. |
Povzetek - enako kot hashCode v Javi
Razlika v enakih in hashCode v Javi je v tem, da se enako uporablja za primerjavo dveh predmetov, medtem ko hashCode pri zgoščevanju določa, v katero skupino naj bo objekt kategoriziran.