Key Difference - võrdub Java hashCode'iga
Võrdne on sarnane operaatoriga ==, mis peab pigem kontrollima objekti identsust kui objekti võrdsust. HashCode on meetod, mille abil klass jaotab klassi eksemplaris salvestatud andmed kaudselt või otseselt üheks räsiväärtuseks, mis on 32-bitine täisarv. Peamine erinevus võrdsete ja hashCode'i vahel Java-s on see, et võrdseid kasutatakse kahe objekti võrdlemiseks, samas kui hashCode'i kasutatakse räsimisel, et otsustada, millisesse rühma objekt tuleks liigitada.
SISU
1. Ülevaade ja võtmete erinevus
2. Mis on Java-s võrdne
3. Mis on Java-s hashCode
4. Võrdlus kõrvuti - võrdub vs hashCode Java-s tabelina
5. Kokkuvõte
Mis on Java-s võrdne?
Kahe objekti võrdlemiseks kasutatakse meetodit Võrdne. Vaikimisi võrdsustatud meetod on määratletud objektiklassis. See teostus sarnaneb operaatoriga ==. Need kaks objektiviidet on võrdsed ainult siis, kui nad osutavad samale objektile. Võrdsete meetodi on võimalik alistada.
Joonis 01: Java programm võrdsetega
Avaldus 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);
Avaldus 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 klassi Object võrdseid. Tõene kuvatakse ainult siis, kui objektiviide osutab samale objektile.
Joonis 02: Java-programm koos alistatuga on võrdne
Vastavalt ülaltoodud programmile on võrdse meetod tühistatud. Objekt edastatakse meetodile ja tüüp valatakse Studentile. Seejärel kontrollitakse id-väärtusi. Kui id-väärtused on sarnased, naaseb see tõeks. Kui ei, tagastab see vale. S1 ja s2 id on sarnased. Nii et see trükib tõsi. Samuti on s1 ja s3 ID-d sarnased, nii et see trükitakse tõeseks.
Mis on Java hashCode?
HashCode'i kasutatakse räsimisel, et otsustada, millisesse rühma objekt tuleks liigitada. Rühm objekte võib jagada sama hashCode. Õige räsimisfunktsioon võib objekte ühtlaselt jaotada erinevatesse rühmadesse.
Korrektsel hashCode'il võivad olla järgmised omadused. Oletame, et objekte obj1 ja obj2 on kaks. Kui obj1.equals (obj2) on tõene, siis obj1.hashCode () on võrdne obj2.hashCode (). Kui obj1.equals (obj2) on vale, pole vaja, et obj1.hashCode () ei oleks võrdne objekt2.hashCode (). Samuti võib kahel ebavõrdsel objektil olla sama hashCode.
Joonis 03: Võrdsete õpilaste klass ja hashCode
Joonis 04: Põhiprogramm
Õpilasklass sisaldab võrdsus- ja hashCode-meetodeid. Võrdsete meetod õpilaste klassis saab objekti. Kui objekt on null, tagastab see vale. Kui objektide klassid pole ühesugused, tagastab see vale. Id-väärtusi kontrollitakse mõlemas objektis. Kui need on sarnased, taastub see tõsi. Muul juhul tagastab see vale.
Peaprogrammis luuakse objektid s1 ja s2. Kui helistate s1.equals (s2), on see tõene, kuna võrdsemeetod on alistatud ja see kontrollib kahe objekti id-väärtusi. Isegi kui nad 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. S1 ja s2 hashCode'i printimine annab sama väärtuse. HashCode-meetodit saab kasutada selliste kogude puhul nagu HashMap.
Mis vahe on Java-s võrdsete ja hashCode'i vahel?
Erinev artikkel keskel enne tabelit
võrdub Java-s 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 jaotab klassi eksemplaris salvestatud andmed kaudselt või otseselt üheks räsiväärtuseks. |
Kasutamine | |
Meetodit võrdub kasutatakse kahe objekti võrdlemiseks. | Seda meetodit kasutatakse räsimisel, et otsustada, millisesse rühma objekt tuleks paigutada. |
Kokkuvõte - võrdub Java hashCode'iga
Võrdsete ja hashCode erinevus Java-s on see, et võrdseid kasutatakse kahe objekti võrdlemiseks, samas kui hashCode'i kasutatakse räsimisel, et otsustada, millisesse rühma objekt tuleks liigitada.