Vienādojums ir līdzīgs operatoram ==, kas ir objekta identitātes pārbaude, nevis objekta vienlīdzība. Jaucējkods ir metode, ar kuru klase netieši vai tieši sadala datus, kas tiek glabāti klases eksemplārā, vienā hash vērtībā, kas ir 32 bitu parakstīts vesels skaitlis. galvenā atšķirība starp vienādu un hashCode collā Java vai tas ir vienāds tiek izmantots, lai salīdzinātu divus objektus, bet hashCode tiek izmantots hashingā, lai izlemtu, kurā grupā objekts ir klasificējams.
1. Pārskats un galvenās atšķirības
2. Kas Java ir vienāds?
3. Kas Java satur hashCode?
4. Blakus salīdzinājums - vienāds ar vs hashCode Java tabulas formā
5. Kopsavilkums
Divu objektu salīdzināšanai tiek izmantota vienādojuma metode. Objektu klasē ir definēta noklusējuma vienādojuma metode. Šī ieviešana ir līdzīga operatoram ==. Abas objekta atsauces ir vienādas tikai tad, ja tās norāda uz vienu un to pašu objektu. Ir iespējams ignorēt vienādojuma metodi.
01. attēls: Java programma ar vienādām
Apgalvojums System.out.println (s1.equals (s2)) sniegs atbildi nepatiesu, jo s1 un s2 attiecas uz diviem dažādiem objektiem. Tas bija līdzīgs apgalvojumam System.out.println (s1 == s2);
Paziņojums System.out.println (s1.equals (s3)) sniegs atbildi patiesu, jo s1 un s3 attiecas uz vienu un to pašu objektu. Tas bija līdzīgs apgalvojumam System.out.println (s1 == s3);
Studentu klasē nav vienādas metodes. Tāpēc tiek saukti vienādnieki objektā klasē. Patiess tiek parādīts tikai tad, ja objekta atsauce norāda uz to pašu objektu.
02 attēls: Java programma ar pārspīlētiem vienādiem
Saskaņā ar iepriekšminēto programmu vienādojuma metode tiek ignorēta. Objekts tiek nodots metodei, un tas tiek nodots Studentam. Pēc tam tiek pārbaudītas id vērtības. Ja id vērtības ir līdzīgas, tas atgriezīsies patiess. Ja nē, tas atgriezīsies nepatiess. S1 un s2 ID ir līdzīgas. Tātad, tas drukās patiesi. Arī s1 un s3 ID ir līdzīgi, tāpēc izdrukās taisnība.
Jaukšanas kods tiek izmantots jaucējdarbībā, lai izlemtu, kurā grupā objekts ir klasificējams. Objektu grupai var būt vienāds hashCode. Pareiza sajaukšanas funkcija var vienmērīgi sadalīt objektus dažādās grupās.
Pareizam hashCode var būt šādas īpašības. Pieņemsim, ka ir divi objekti kā obj1 un obj2. Ja obj1.equals (obj2) ir taisnība, tad obj1.hashCode () ir vienāds ar obj2.hashCode (). Ja obj1.equals (obj2) ir nepatiess, nav nepieciešams, lai obj1.hashCode () nebūtu vienāds ar obj2.hashCode (). Diviem nevienlīdzīgajiem objektiem varētu būt arī tāds pats hashCode.
03. attēls. Studentu klase ar vienādu un hashCode
04. attēls: galvenā programma
Studentu klasē ir equals un hashCode metodes. Vienāda metode Studentu klasē saņems objektu. Ja objekts ir nulle, tas atgriezīsies nepatiess. Ja objektu klases nav vienādas, tas atgriezīsies nepatiess. ID vērtības tiek pārbaudītas abos objektos. Ja tie ir līdzīgi, tas atgriezīsies patiess. Citādi tas atgriezīsies nepatiess.
Pamatprogrammā tiek izveidoti objekti s1 un s2. Zvanot uz s1.equals (s2), tiks piešķirta taisnība, jo vienādojuma metode tiek ignorēta un tā pārbauda divu objektu ID vērtības. Pat ja tie attiecas uz diviem objektiem, atbilde ir patiesa, jo id vērtības s1 un s2 ir vienādas. Tā kā s1.equals (s2) ir taisnība, s1 un s2 hashCode jābūt vienādai. Drukājot s1 un s2 hashCode, tiek dota vienāda vērtība. HashCode metodi var izmantot tādās kolekcijās kā HashMap.
vienāds ar Java hashCode | |
equals ir Java metode, kas darbojas līdzīgi operatoram ==, kas ir objekta identitātes pārbaude, nevis objekta vienlīdzība. | hashCode ir metode, ar kuru klase netieši vai tieši sadala datus, kas tiek glabāti klases eksemplārā, vienā hash vērtībā. |
Lietošana | |
Metode vienāda tiek izmantota, lai salīdzinātu divus objektus. | Metode tiek izmantota sajaukšanā, lai izlemtu, kurā grupā ievietot objektu. |
Vienādību un hashCode atšķirība Java ir tāda, ka vienādo tiek izmantots, lai salīdzinātu divus objektus, bet hashCode tiek izmantots hashingā, lai izlemtu, kurā grupā objekts ir klasificējams.
1. “Java HashCode ()”. Wikipedia, Wikimedia Foundation, 2018. gada 17. februāris. Pieejams šeit
2.Harold, Elliotte Rusty. “Vienādojuma () metode.” Vienādojuma () metode, 2001. gada 2. novembris. Pieejams šeit