Razlika med enakimi in hashCode v Javi

Ključna razlika - enako vs hashCode v Java
 

Enakost je podobna operatorju ==, ki naj bi preizkusil identiteto predmeta in ne enakosti predmeta. HashCode je metoda, s katero razred implicitno ali izrecno razčleni podatke, shranjene v primerku razreda, na eno samo hash vrednost, ki je 32-bitno podpisano celo število. The ključna razlika med enako in hashCode v Java je to enaka se uporablja za primerjavo dveh predmetov, medtem ko se hashCode uporablja v hashingu, da se odloči, v katero skupino naj bo predmet kategoriziran.

VSEBINA

1. Pregled in ključne razlike
2. Kaj je enako Javi
3. Kaj je hashCode v Javi
4. Primerjava ob strani - v tabeli je enaka vs hashCode v Javi
5. Povzetek

Kaj je enako Javi?

Za primerjavo dveh predmetov se uporablja metoda enak. Metoda privzeto enaka je določena v razredu predmetov. Ta izvedba je podobna operaterju ==. Obe referenci objekta sta enaki le, če kažeta na isti objekt. Možno je preglasiti metodo enakosti.

Slika 01: Java program z enakimi

Stavek System.out.println (s1.equals (s2)) bo odgovoril napačno, ker se s1 in s2 nanašata na dva različna predmeta. Podobno je bilo z izjavo System.out.println (s1 == s2);

Stavek System.out.println (s1.equals (s3)) bo dal odgovor resničen, ker se s1 in s3 nanašata na isti objekt. Podobno je bilo z izjavo System.out.println (s1 == s3);

V razredu Študent ni metode enakovrednosti. Zato se imenuje enako v razredu Objekt. True je prikazano le, če referenca predmeta kaže na isti predmet.

Slika 02: Program Java s prepisanimi enako

V skladu z zgornjim programom je metoda enakovredna. Predmet se preda metodi in ga vpiše v Student. Nato se preverijo vrednosti id. Če so vrednosti id podobne, se bo vrnilo res. Če ne, bo vrnjeno napačno. ID-ji s1 in s2 sta podobni. Torej, bo tiskal resnično. Tudi id-jev s1 in s3 sta podobna, zato bo tiskal resnico.

Kaj je hashCode v Javi?

HashCode se uporablja v hashingu, da se odloči, v katero skupino naj bo predmet kategoriziran. Skupina predmetov lahko deli isto hashCode. Pravilna funkcija mešanja lahko enakomerno porazdeli predmete v različne skupine.

Pravilni hashCode ima lahko naslednje lastnosti. Predpostavimo, da obstajata dva predmeta kot obj1 in obj2. Če je obj1.equals (obj2) res, potem je obj1.hashCode () enako obj2.hashCode (). Če je obj1.equals (obj2) napačen, ni nujno, da obj1.hashCode () ni enak obj2.hashCode (). Dva neenaka predmeta imata lahko isto iskalno kodo.

Slika 03: Razred študentov z enakimi in hashCode

Slika 04: Glavni program

Razred Študent vsebuje metode enake in hashCode. Metoda enaka v razredu Študent bo prejela predmet. Če je predmet ničen, bo vrnil napačno. Če razredi predmetov niso enaki, se bodo vrnili napačno. Vrednosti id se preverijo v obeh objektih. Če so si podobni, se bo vrnilo res. Drugače se bo vrnilo lažno.

V glavnem programu se ustvarijo predmeti s1 in s2. Ko kličete s1.equals (s2), bo to res, ker je metoda enaka prepisana in preveri id vrednosti obeh predmetov. Čeprav se sklicujeta na dva predmeta, je odgovor resničen, ker sta vrednosti id s1 in s2 enaki. Ker je s1.equals (s2) resnično, morata biti hashCode s1 in s2 enaki. Tiskanje hashCode s1 in s2 daje isto vrednost. Metodo hashCode lahko uporabljamo z zbirkami, kot je HashMap.

Kakšna je razlika med enako in hashCode na Javi?

enako v primerjavi z hashCode na Javi

equals je metoda na Javi, ki deluje podobno kot operator ==, ki naj bi preizkusila identiteto predmeta in ne enakosti predmeta. hashCode je metoda, s katero razred implicitno ali izrecno razčleni podatke, shranjene v primerku razreda, na eno samo vrednost hash.
 Uporaba
Za primerjavo dveh predmetov se uporablja metoda enaka. Metoda se v hashingu odloči, v katero skupino naj bo predmet postavljen.

Povzetek - enako vs hashCode v Java

Razlika v enakih in hashCode na Javi je, da se enake uporablja za primerjavo dveh predmetov, medtem ko se hashCode uporablja v hashingu, da se odloči, v katero skupino naj bo predmet kategoriziran.

Referenca:

1. "Java HashCode ()." Wikipedia, fundacija Wikimedia, 17. februar 2018. Na voljo tukaj 
2.Harold, Elliotte Rusty. "Metoda enako ()." Metoda Enako (), 2. novembra 2001. Na voljo tukaj