Skirtumas Tarp „Java“lygių Ir „hashCode“

Turinys:

Skirtumas Tarp „Java“lygių Ir „hashCode“
Skirtumas Tarp „Java“lygių Ir „hashCode“

Video: Skirtumas Tarp „Java“lygių Ir „hashCode“

Video: Skirtumas Tarp „Java“lygių Ir „hashCode“
Video: Programavimo kalba Java #4 Komentarai, Javadocs, Anotacijos 2024, Gegužė
Anonim

Rakto skirtumas - lygu su „hashCode“sistemoje „Java“

Lygus yra panašus į operatorių ==, kuris turi patikrinti objekto tapatumą, o ne objekto lygybę. „HashCode“yra metodas, pagal kurį klasė netiesiogiai arba tiesiogiai suskirsto klasės egzemplioriuje saugomus duomenis į vieną maišos vertę, kuri yra 32 bitų pasirašytas sveikasis skaičius. Pagrindinis skirtumas tarp „equals“ir „hashCode“sistemoje „Java“yra tas, kad lygūs yra naudojami dviem objektams palyginti, o „hashCode“naudojamas maišant, norint nuspręsti, į kurią grupę objektas turėtų būti priskirtas.

TURINYS

1. Apžvalga ir raktų skirtumas

2. Kas yra lygu „Java“

3. Kas yra „hashCode“„Java“

4. Palyginimas lygiagrečiai - lygu su „hashCode“„Java“lentelėje

5. Santrauka

Kas yra lygu „Java“?

Dviejų objektų palyginimui naudojamas lygių metodas. Numatytasis lygus metodas yra apibrėžtas objektų klasėje. Tas įgyvendinimas yra panašus į == operatorių. Dvi objekto nuorodos yra lygios tik tuo atveju, jei jos nukreiptos į tą patį objektą. Lygių metodą galima nepaisyti.

Skirtumas tarp „Java“lygių ir „hashCode“
Skirtumas tarp „Java“lygių ir „hashCode“

01 pav. „Java“programa su lygiais

Teiginys System.out.println (s1.equals (s2)) duos atsakymą klaidingą, nes s1 ir s2 nurodo du skirtingus objektus. Jis buvo panašus į teiginį System.out.println (s1 == s2);

Teiginys System.out.println (s1.equals (s3)) pateiks teisingą atsakymą, nes s1 ir s3 nurodo tą patį objektą. Jis buvo panašus į teiginį System.out.println (s1 == s3);

Studentų klasėje nėra lygių metodo. Todėl klasėje Object vadinami lygūs. Tiesa rodoma tik tuo atveju, jei objekto nuoroda rodo į tą patį objektą.

Skirtumas tarp lygių ir hashCode programoje „Java Figure 02“
Skirtumas tarp lygių ir hashCode programoje „Java Figure 02“

02 pav. „Java“programa su nepaisoma lygi

Pagal pirmiau pateiktą programą, lygus metodas yra nepaisomas. Objektas perduodamas metodui, o jo tipas perduodamas studentui. Tada patikrinamos ID vertės. Jei id reikšmės yra panašios, tai bus teisinga. Jei ne, tai bus klaidinga. S1 ir s2 ID yra panašūs. Taigi, tai bus teisinga. „S1“ir „s3“ID taip pat yra panašūs, todėl jie bus teisingi.

Kas yra „hashCode“„Java“?

„HashCode“naudojamas maišant, norint nuspręsti, į kurią grupę turėtų būti klasifikuojamas objektas. Objektų grupė gali naudoti tą patį hashCode. Teisinga maišos funkcija gali tolygiai paskirstyti objektus į skirtingas grupes.

Teisingas hashCode gali turėti tokias savybes: Tarkime, kad yra du objektai kaip obj1 ir obj2. Jei tiesa obj1.equals (obj2), tada obj1.hashCode () yra lygus obj2.hashCode (). Jei obj1.equals (obj2) yra klaidingas, nebūtina, kad obj1.hashCode () nebūtų lygus obj2.hashCode (). Du nelygūs objektai taip pat gali turėti tą patį hashCode.

Skirtumas tarp lygių ir hashCode programoje „Java Figure 03“
Skirtumas tarp lygių ir hashCode programoje „Java Figure 03“

03 pav. Studentų klasė su lygiais ir hashCode

Pagrindinis skirtumas tarp „Java“lygių ir „hashCode“
Pagrindinis skirtumas tarp „Java“lygių ir „hashCode“

04 pav. Pagrindinė programa

Studentų klasėje yra lygių ir hashCode metodai. Metodas „lygu“studentų klasėje gaus objektą. Jei objektas yra nulinis, jis grąžins klaidingą reikšmę. Jei objektų klasės nėra vienodos, tai bus klaidinga. ID vertės tikrinamos abiejuose objektuose. Jei jie yra panašūs, tai grįš tiesa. Kitu atveju tai bus klaidinga.

Pagrindinėje programoje kuriami objektai s1 ir s2. Iškviečiant s1.equals (s2) bus teisinga, nes metodas lygus yra nepaisomas ir jis tikrina dviejų objektų id reikšmes. Nors jie nurodo du objektus, atsakymas yra teisingas, nes s1 ir s2 id reikšmės yra vienodos. Kadangi tiesa yra s1.equals (s2), s1 ir s2 hashCode turėtų būti lygus. Spausdinant s1 ir s2 hashCode, gaunama ta pati reikšmė. „HashCode“metodą galima naudoti su tokiomis kolekcijomis kaip „HashMap“.

Koks skirtumas tarp „Java“lygių ir „hashCode“?

Skirtingas straipsnis viduryje prieš lentelę

lygu vs hashCode „Java“

equals yra „Java“metodas, veikiantis panašiai kaip operatorius ==, kuris yra objekto tapatumo, o ne objekto lygybės patikrinimas. hashCode yra metodas, pagal kurį klasė netiesiogiai arba tiesiogiai suskirsto klasės egzemplioriuje saugomus duomenis į vieną maišos vertę.
Naudojimas
Metodas lygus naudojamas norint palyginti du objektus. Šis metodas naudojamas maišant, norint nuspręsti, į kurią grupę reikia įtraukti objektą.

Santrauka - lygu su hashCode Java

„Java“lygių ir „hashCode“skirtumas yra tas, kad lygūs yra naudojami dviem objektams palyginti, o „hashCode“naudojamas maišant, norint nuspręsti, į kurią grupę objektas turėtų būti suskirstytas.

Rekomenduojama: