Võrdne on sarnane operaatoriga ==, mille eesmärk on testida objekti identiteeti, mitte objekti võrdsust. Räsikood on meetod, mille abil klass jagab kaudselt või kaudselt klassi astmes salvestatud andmed üheks räsiväärtuseks, mis on 32-bitine allkirjastatud täisarv. võtme erinevus võrdse ja hashCode'i vahel Java on see kahe objekti võrdlemiseks kasutatakse võrdset, samal ajal kui hashCode-d kasutatakse räsimisel, et otsustada, millisesse rühma objekt tuleks liigitada.
1. Ülevaade ja peamised erinevused
2. Mis võrdub Java-ga
3. Mis on Java hashCode?
4. Side by Side Comparison - võrdub vs hashCode Java-ga tabelina
5. Kokkuvõte
Kahe objekti võrdlemiseks kasutatakse võrdsustatud meetodit. Vaikimisi võrdsustatud meetod on määratletud objektiklassis. See rakendamine sarnaneb operaatori == omaga. Kaks objekti viidet on võrdsed ainult siis, kui nad osutavad samale objektile. Võrdusmeetodit on võimalik alistada.
Joonis 01: Java programm võrdsetega
Lause 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);
Lause System.out.println (s1.equals (s3)) annab vastuse tõese, kuna s1 ja s3 viitavad ühele ja samale objektile. See sarnanes avaldusega System.out.println (s1 == s3);
Õpilasklassis pole võrdset meetodit. Seetõttu nimetatakse objekti klassis olevaid võrdseid. Tõene kuvatakse ainult siis, kui objekti viide osutab samale objektile.
Joonis 02: Ületatud võrranditega Java-programm
Ülaltoodud programmi kohaselt on võrdsete meetod ümber jäetud. Objekt antakse meetodile ja see kirjutatakse õpilasele. Seejärel kontrollitakse id väärtusi. Kui id-väärtused on sarnased, tagastub see tõesena. Kui ei, siis tagastatakse vale. S1 ja s2 id on sarnased. Niisiis, see trükitakse tõene. Ka s1 ja s3 ID-d on sarnased, nii et see prindib tõeseks.
Räsikoodi kasutatakse räsimisel otsustamiseks, millisesse rühma objekt tuleks liigitada. Objektide rühmal on sama räsi kood. Õige räsifunktsioon võib objektid ühtlaselt jaotada erinevatesse rühmadesse.
Õige hashCode'i omadused võivad olla järgmised. Oletame, et obj1 ja obj2 on kaks objekti. Kui obj1.equals (obj2) on tõene, siis obj1.hashCode () võrdub obj2.hashCode (). Kui obj1.equals (obj2) on vale, pole vaja, et obj1.hashCode () ei võrduks obj2.hashCode () -ga. Kahel ebavõrdsel objektil võib olla sama räsi kood.
Joonis 03: Õpilaste klass võrrandi ja hashCoodiga
Joonis 04: Põhiprogramm
Õpilasklass sisaldab võrrandi- ja hashCode-meetodeid. Õpilase klassis saadud võrdusmeetodi korral võetakse vastu objekt. Kui objekt on null, tagastab see vale. Kui objektide klassid pole samad, tagastatakse vale. Id väärtusi kontrollitakse mõlemas objektis. Kui nad on sarnased, siis vastab see tõele. Kui see naaseb valeks.
Põhiprogrammis luuakse objektid s1 ja s2. Kui helistate s1.equals (s2), annab see tõese väärtuse, kuna võrrandi meetod on tühistatud ja see kontrollib kahe objekti id väärtusi. Isegi kui nad viitavad kahele objektile, on vastus tõene, kuna id1 ja s2 on identsed. Kuna s1.equals (s2) on tõene, peaksid s1 ja s2 hashCode olema võrdsed. S1 ja s2 hashCode'i printimine annab sama väärtuse. HashCode-meetodit saab kasutada selliste kogudega nagu HashMap.
võrdub Java hashCode'iga | |
equals on Java meetod, mis toimib sarnaselt == operaatoriga, mille eesmärk on testida objekti identiteeti, mitte objekti võrdsust. | hashCode on meetod, mille abil klass jagab klassi eksemplaris salvestatud andmed kaudselt või kaudselt üheks räsiväärtuseks. |
Kasutamine | |
Kahe objekti võrdlemiseks kasutatakse meetodit võrdub. | Meetodit kasutatakse räsimisel, et otsustada, millisesse rühma objekt paigutada. |
Javas võrduste ja hashCode'i erinevus seisneb selles, et kahe objekti võrdlemiseks kasutatakse võrdset, samal ajal kui hashCode'i kasutatakse räsimisel, et otsustada, millisesse rühma objekt tuleks liigitada.
1. „Java HashCode ()”. Wikipedia, Wikimedia Foundation, 17. veebruar 2018. Saadaval siin
2.Harold, Elliotte Rusty. “Võrdse () meetod.” Equals () meetod, 2. november 2001. Saadaval siin