Erinevus Java-koodi ja hashCode vahel

Sisukord:

Erinevus Java-koodi ja hashCode vahel
Erinevus Java-koodi ja hashCode vahel

Video: Erinevus Java-koodi ja hashCode vahel

Video: Erinevus Java-koodi ja hashCode vahel
Video: Рефакторинг: switch vs if-else vs enum vs HashMap [Шаблон "Команда"] 2024, Juuli
Anonim

Võtmete erinevus – võrdub Java räsikoodiga

Võrdne on sarnane operaatoriga==, mille eesmärk on testida objekti identiteeti, mitte objekti võrdsust. Räsikood on meetod, mille abil klass jaotab kaudselt või selgesõnaliselt klassi eksemplari salvestatud andmed üheks räsiväärtuseks, mis on 32-bitine märgiga täisarv. Peamine erinevus võrdsete ja räsikoodi vahel Javas on see, et võrdsust kasutatakse kahe objekti võrdlemiseks, samas kui räsikoodi kasutatakse räsimisel, et otsustada, millisesse rühma objekt tuleks liigitada.

Mis võrdub Javas?

Kahe objekti võrdlemiseks kasutatakse võrdsuse meetodit. Vaikimisi võrdub meetod on määratletud objektiklassis. See teostus sarnaneb==operaatoriga. Kaks objektiviidet on võrdsed ainult siis, kui nad osutavad samale objektile. Võrdsuse meetodit on võimalik tühistada.

Võrdsete ja räsikoodi erinevus Javas
Võrdsete ja räsikoodi erinevus Javas

Joonis 01: Java programm võrdub

Väide System.out.println(s1.equals(s2)) annab vastuse vale, kuna s1 ja s2 viitavad kahele erinevale objektile. See sarnanes avaldusega System.out.println(s1==s2);

Väide System.out.println(s1.equals(s3)) annab vastuse tõeseks, kuna s1 ja s3 viitavad samale objektile. See sarnanes avaldusega System.out.println(s1==s3);

Õpilaste klassis pole võrdsete meetodit. Seetõttu nimetatakse objekti klassi võrdseid. Tõene kuvatakse ainult siis, kui objektiviide osutab samale objektile.

Võrdsete ja räsikoodi erinevus Javas_Joonis 02
Võrdsete ja räsikoodi erinevus Javas_Joonis 02

Joonis 02: Java programm koos tühistamisega võrdub

Vastav alt ül altoodud programmile on võrdsete meetod alistatud. Objekt edastatakse meetodile ja see kantakse üle õpilasele. Seejärel kontrollitakse ID-väärtusi. Kui ID väärtused on sarnased, tagastab see tõene. Kui ei, tagastatakse vale. S1 ja s2 ID-d on sarnased. Niisiis, see trükitakse tõeseks. Ka s1 ja s3 ID-d on sarnased, seega prinditakse tõene.

Mis on Java hashCode?

Räsikoodi kasutatakse räsimisel, et otsustada, millisesse rühma objekt tuleks liigitada. Rühm objekte võib jagada sama räsikoodi. Õige räsifunktsioon võib jaotada objektid ühtlaselt erinevatesse rühmadesse.

Õigel räsikoodil võivad olla järgmised omadused. Oletame, et on kaks objekti nagu obj1 ja obj2. Kui obj1.equals(obj2) on tõene, siis obj1.hashCode() on võrdne obj2.hashCode(). Kui obj1.equals(obj2) on väär, ei pea obj1.hashCode() olema võrdne väärtusega obj2.hashCode(). Kahel ebavõrdsel objektil võib olla ka sama räsikood.

Võrdsete ja räsikoodi erinevus Javas_Joonis 03
Võrdsete ja räsikoodi erinevus Javas_Joonis 03

Joonis 03: Õpilasklass võrdsete ja hashCode'iga

Peamised erinevused Java ja hashCode vahel
Peamised erinevused Java ja hashCode vahel

Joonis 04: Põhiprogramm

Õpilaste klass sisaldab võrde ja hashCode meetodeid. Võrdsuse meetod õpilaste klassis saab objekti. Kui objekt on null, tagastab see vale. Kui objektide klassid ei ole samad, tagastab see vale. ID-väärtusi kontrollitakse mõlemas objektis. Kui need on sarnased, on see tõene. Vastasel juhul tagastab see vale.

Põhiprogrammis luuakse objektid s1 ja s2. Kutsudes s1.equals(s2) annab tõene, kuna võrdub meetod alistatakse ja see kontrollib kahe objekti id-väärtusi. Kuigi need viitavad kahele objektile, on vastus tõene, kuna s1 ja s2 id väärtused on samad. Kuna s1.equals(s2) on tõene, peaks s1 ja s2 hashCode olema võrdne. Räsikoodi s1 ja s2 printimine annab sama väärtuse. HashCode meetodit saab kasutada selliste kogudega nagu HashMap.

Mis vahe on Javas võrdsete ja hashCode vahel?

võrdub Java-räsikoodiga

võrdub on Java meetod, mis toimib sarnaselt==operaatoriga, mille eesmärk on testida objekti identiteeti, mitte objekti võrdsust. hashCode on meetod, mille abil klass jaotab kaudselt või otseselt klassi eksemplari salvestatud andmed üheks räsiväärtuseks.
Kasutus
Kahe objekti võrdlemiseks kasutatakse meetodit võrdub. Meetodit kasutatakse räsimisel, et otsustada, millisesse rühma objekt paigutada.

Kokkuvõte – võrdub Java räsikoodiga

Java võrdusväärtuste ja räsikoodide erinevus seisneb selles, et võrdsust kasutatakse kahe objekti võrdlemiseks, samas kui räsikoodi kasutatakse räsimisel, et otsustada, millisesse rühma objekt tuleks liigitada.

Soovitan: