Skirtumas tarp lygios ir „hashCode“ „Java“

Pagrindinis skirtumas - lygus prieš „hashCode“ „Java“
 

Lygybė yra panaši į == operatorių, kuris yra skirtas patikrinti objekto tapatumą, o ne objekto lygybę. „HashCode“ yra metodas, kuriuo klasė netiesiogiai ar aiškiai suskaido klasės egzemplioriuje saugomus duomenis į vieną maišos vertę, kuri yra 32 bitų pasirašytas sveikasis skaičius. pagrindinis skirtumas tarp lygios ir „Java“ ar tai lygus naudojamas norint palyginti du objektus, o maišos kodas naudojamas maišant, norint nuspręsti, kurią grupę objektas turėtų būti suskirstytas į.

TURINYS

1. Apžvalga ir svarbiausias skirtumas
2. Kas lygu „Java“
3. Kas yra „hashCode“ „Java“
4. Šalutinis palyginimas - lygus vs „hashCode“ „Java“ lentelės forma
5. Santrauka

Kas lygu „Java“?

Dviejų objektų palyginimui naudojamas lygių metodas. Numatytasis lygus metodas yra apibrėžtas objektų klasėje. Šis įgyvendinimas yra panašus į == operatorių. Dvi objekto nuorodos yra lygios tik tuo atveju, jei jie nurodo tą patį objektą. Tai įmanoma perrašyti iš lygybės metodo.

01 paveikslas: „Java“ programa su lygiaverčiais

Teiginys System.out.println (s1.equals (s2)) pateiks atsakymą klaidingai, nes s1 ir s2 nurodo du skirtingus objektus. Tai buvo panašu į teiginį „System.out.println“ (s1 == s2);

Teiginys System.out.println (s1.equals (s3)) suteiks atsakymą teisingą, nes s1 ir s3 nurodo tą patį objektą. Tai buvo panašu į teiginį „System.out.println“ (s1 == s3);

Studentų klasėje nėra lygaus metodo. Todėl objekto klasėje lygtys vadinamos. „True“ rodoma tik tuo atveju, jei objekto nuoroda nurodo tą patį objektą.

02 paveikslas: „Java“ programa su nepaisomais lygiais

Pagal aukščiau pateiktą programą, lygus metodas yra nepaisomas. Objektas perduodamas metodui, o jo tipas perduodamas studentui. Tada tikrinamos ID vertės. Jei id reikšmės yra panašios, ji bus teisinga. Jei ne, grįš klaidinga. S1 ir s2 ID yra panašūs. Taigi, tai atspausdins tiesa. S1 ir s3 ID taip pat yra panašūs, todėl bus atspausdinta tiesa.

Kas yra „hashCode“ „Java“?

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

Teisingas maišos kodas gali turėti šias savybes. Tarkime, kad yra du objektai kaip obj1 ir obj2. Jei obj1.equals (obj2) yra tiesa, tada obj1.hashCode () yra lygus obj2.hashCode (). Jei obj1.equals (obj2) yra klaidingas, nebūtina, kad obj1.hashCode () nebūtų lygus obj2.hashCode (). Du nelygiaverčiai objektai taip pat gali turėti tą patį maišos kodą.

03 pav. Studentų klasė su lygiaverte ir „hashCode“

04 paveikslas: Pagrindinė programa

Studentų klasėje pateikiami lygybės ir maišos kodo metodai. Lygių metodas studentų klasėje gaus objektą. Jei objektas yra negaliojantis, jis bus grąžintas klaidingai. Jei objektų klasės nesutampa, grįš klaidinga. ID vertės yra tikrinamos abiejuose objektuose. Jei jie panašūs, grįš tiesa. Kitaip grįš klaidinga.

Pagrindinėje programoje sukuriami objektai s1 ir s2. Paskambinus s1.equals (s2) bus teisinga, nes ekvivalento metodas yra nepaisomas ir jis patikrina dviejų objektų ID reikšmes. Net jei jie nurodo du objektus, atsakymas yra teisingas, nes id s1 ir s2 yra vienodos. Kadangi s1equals (s2) yra tiesa, s1 ir s2 maišos kodai turėtų būti lygūs. Spausdinant s1 ir s2 hashCode, gaunama ta pati vertė. „HashCode“ metodą galima naudoti tokiose kolekcijose kaip „HashMap“.

Koks skirtumas tarp „Java“ lygybės ir „hashCode“??

lygus vs „hashCode“ „Java“

lygus - tai „Java“ metodas, veikiantis panašiai kaip == operatorius, ty patikrinti objekto tapatumą, o ne objekto lygybę. „hashCode“ yra metodas, kuriuo klasė netiesiogiai ar aiškiai suskaido 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, kuriai grupei objektas turėtų būti priskiriamas.

Santrauka - lygus prieš „hashCode“ „Java“

Lygybės ir „hashCode“ skirtumas „Java“ yra tas, kad lygus yra naudojamas norint palyginti du objektus, o „hashCode“ naudojamas maišos metu, norint nuspręsti, kurią grupę objektas turėtų būti suskirstytas į.

Nuoroda:

1. „Java HashCode ()“. Vikipedija, „Wikimedia Foundation“, 2018 m. Vasario 17 d. Galima rasti čia 
2.Harold, Elliotte Rusty. „Lygus () metodas.“ Equals () metodas, 2001 m. Lapkričio 2 d. Galima rasti čia