Erinevus Java-s Võrdsete Ja HashCode'i Vahel

Sisukord:

Erinevus Java-s Võrdsete Ja HashCode'i Vahel
Erinevus Java-s Võrdsete Ja HashCode'i Vahel

Video: Erinevus Java-s Võrdsete Ja HashCode'i Vahel

Video: Erinevus Java-s Võrdsete Ja HashCode'i Vahel
Video: Java. Методы equals и hashCode. 2024, Mai
Anonim

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.

Erinevus Java-s võrdsete ja hashCode'i vahel
Erinevus Java-s võrdsete ja hashCode'i vahel

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.

Erinevus võrdsete ja hashCode vahel Java Figure 02-s
Erinevus võrdsete ja hashCode vahel Java Figure 02-s

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.

Võrdsete ja hashCode erinevus Java Figure 03-s
Võrdsete ja hashCode erinevus Java Figure 03-s

Joonis 03: Võrdsete õpilaste klass ja hashCode

Võrdsete võrdlus Java-s hashCode'i vahel
Võrdsete võrdlus Java-s hashCode'i vahel

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.

Soovitatav: