Razlika med equals in hashCode v Javi

Kazalo:

Razlika med equals in hashCode v Javi
Razlika med equals in hashCode v Javi

Video: Razlika med equals in hashCode v Javi

Video: Razlika med equals in hashCode v Javi
Video: Java. Методы equals и hashCode. 2024, November
Anonim

Ključna razlika – enako proti hashCode v Javi

Equals je podoben operatorju==, ki preizkuša identiteto objekta namesto enakosti objekta. HashCode je metoda, s katero razred implicitno ali eksplicitno razčleni podatke, shranjene v primerku razreda, v eno samo zgoščeno vrednost, ki je 32-bitno celo število s predznakom. Ključna razlika med equals in hashCode v Javi je, da se equals uporablja za primerjavo dveh predmetov, medtem ko se hashCode uporablja pri zgoščevanju, da se odloči, v katero skupino naj se predmet kategorizira.

Kaj je enako v Javi?

Metoda equals se uporablja za primerjavo dveh predmetov. Privzeta metoda equals je definirana v razredu objektov. Ta izvedba je podobna operatorju==. Oba sklica na objekt sta enaka le, če kažeta na isti objekt. Možno je preglasiti metodo equals.

Razlika med equals in hashCode v Javi
Razlika med equals in hashCode v Javi

Slika 01: Java program z enakimi

Izjava System.out.println(s1.equals(s2)) bo dala odgovor false, ker se s1 in s2 nanašata na dva različna objekta. Bilo je podobno izjavi System.out.println(s1==s2);

Izjava System.out.println(s1.equals(s3)) bo dala odgovor true, ker se s1 in s3 nanašata na isti objekt. Bilo je podobno izjavi System.out.println(s1==s3);

V razredu študent ni metode enakovrednosti. Zato se v razredu Object pokliče enako. True je prikazan le, če sklic na objekt kaže na isti objekt.

Razlika med equals in hashCode v Java_Figure 02
Razlika med equals in hashCode v Java_Figure 02

Slika 02: Program Java s preglasitvijo je enako

Glede na zgornji program je metoda equals preglasena. Objekt se posreduje metodi, tip pa se pretvori v Student. Nato se preverijo vrednosti ID-ja. Če so vrednosti ID-ja podobne, bo vrnil true. Če ne, bo vrnil false. ID-ja s1 in s2 sta podobna. Torej bo natisnjeno res. ID-ja s1 in s3 sta prav tako podobna, zato bo natisnjeno true.

Kaj je hashCode v Javi?

HashCode se uporablja pri zgoščevanju, da se odloči, v katero skupino naj se predmet kategorizira. 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 obj1 in obj2. Če je obj1.equals(obj2) resničen, potem je obj1.hashCode() enak 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.

Razlika med equals in hashCode v Java_Figure 03
Razlika med equals in hashCode v Java_Figure 03

Slika 03: Študentski razred z enakimi in hashCode

Ključna razlika med equals in hashCode v Javi
Ključna razlika med equals in hashCode v Javi

Slika 04: Glavni program

Razred Student vsebuje metode equals in hashCode. Metoda equals v razredu Student bo prejela objekt. Če je objekt nič, bo vrnil false. Če razredi predmetov niso enaki, bo vrnil false. Vrednosti ID-ja se preverijo v obeh objektih. Če so podobni, se bo vrnilo true. V nasprotnem primeru bo vrnil false.

V glavnem programu se ustvarita objekta s1 in s2. Pri klicu s1.equals(s2) bo dal true, ker je metoda equals preglasena in preverja vrednosti id-ja obeh predmetov. Čeprav se nanašajo na dva predmeta, je odgovor resničen, ker sta vrednosti id s1 in s2 enaki. Ker je s1.equals(s2) resničen, morata biti hashCode s1 in s2 enaki. Tiskanje hashCode s1 in s2 daje enako vrednost. Metodo hashCode je mogoče uporabiti z zbirkami, kot je HashMap.

Kakšna je razlika med equals in hashCode v Javi?

equals proti hashCode v Javi

equals je metoda v Javi, ki deluje podobno kot operator==, ki preizkuša identiteto objekta namesto enakosti objekta. hashCode je metoda, s katero razred implicitno ali eksplicitno razdeli podatke, shranjene v primerku razreda, v eno samo zgoščeno vrednost.
Uporaba
Metoda equals se uporablja za primerjavo dveh predmetov. Metoda se uporablja pri zgoščevanju, da se odloči, v katero skupino naj se predmet uvrsti.

Povzetek – enako proti hashCode v Javi

Razlika med equals in hashCode v Javi je v tem, da se equals uporablja za primerjavo dveh predmetov, medtem ko se hashCode uporablja pri zgoščevanju, da se odloči, v katero skupino naj se predmet kategorizira.

Priporočena: