Galvenā atšķirība - vienāda ar jaucējkodu Java valodā
Vienāds ir līdzīgs operatoram==, kura mērķis ir pārbaudīt objekta identitāti, nevis objekta vienādību. HashCode ir metode, ar kuras palīdzību klase netieši vai tieši sadala klases eksemplārā saglabātos datus vienā jaucējkodā, kas ir vesels skaitlis ar 32 bitu zīmi. Galvenā atšķirība starp vienādiem un hashCode Java ir tāda, ka vienāds tiek izmantots, lai salīdzinātu divus objektus, savukārt hashCode tiek izmantots jaukšanā, lai izlemtu, kurā grupā objekts ir jāiedala.
Kas ir vienāds Java?
Lai salīdzinātu divus objektus, tiek izmantota vienādības metode. Noklusējuma vienādības metode ir definēta objektu klasē. Šī ieviešana ir līdzīga==operatoram. Abas objektu atsauces ir vienādas tikai tad, ja tās norāda uz vienu un to pašu objektu. Ir iespējams ignorēt vienādības metodi.
Attēls 01: Java programma ar vienādu
Paziņojums System.out.println(s1.equals(s2)) sniegs atbildi nepatiesu, jo s1 un s2 attiecas uz diviem dažādiem objektiem. Tas bija līdzīgs paziņojumam 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 paziņojumam System.out.println(s1==s3);
Studentu klasē nav vienādas metodes. Tāpēc tiek izsaukti vienādi objektu klasē. True tiek parādīta tikai tad, ja objekta atsauce norāda uz to pašu objektu.
Attēls 02: Java programma ar ignorēšanu ir vienāda ar
Saskaņā ar iepriekš minēto programmu vienādības metode tiek ignorēta. Objekts tiek nodots metodei, un tā tips 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 true. Ja nē, tas atgriezīsies nepatiess. S1 un s2 ID ir līdzīgi. Tātad, tas tiks izdrukāts patiesi. Arī s1 un s3 ID ir līdzīgi, tāpēc tiks drukāts patiess.
Kas ir hashCode Java?
HashCode tiek izmantots jaukšanā, lai izlemtu, kurā grupā objekts ir jāiedala. Objektu grupai var būt kopīgs viens un tas pats hashCode. Pareiza jaukš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 patiess, tad obj1.hashCode() ir vienāds ar obj2.hashCode(). Ja obj1.equals(obj2) ir nepatiess, nav obligāti, ka obj1.hashCode() nav vienāds ar obj2.hashCode(). Abiem nevienādiem objektiem var būt arī vienāds hashCode.
Attēls 03: Studentu klase ar vienādiem un hashCode
Attēls 04: Galvenā programma
Studentu klase satur vienādības un hashCode metodes. Vienādības metode Studentu klasē saņems objektu. Ja objekts ir nulle, tas atgriezīsies false. Ja objektu klases nav vienādas, tas atgriezīsies false. ID vērtības tiek pārbaudītas abos objektos. Ja tie ir līdzīgi, tas būs patiess. Pretējā gadījumā tas atgriezīsies false.
Galvenajā programmā tiek izveidoti objekti s1 un s2. Izsaucot s1.equals(s2), tiks norādīts patiess, jo vienādības 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 s1 un s2 id vērtības ir vienādas. Tā kā s1.equals(s2) ir patiess, s1 un s2 hashCode ir jābūt vienādam. Drukājot hashCode s1 un s2, tiek iegūta tāda pati vērtība. HashCode metodi var izmantot ar tādām kolekcijām kā HashMap.
Kāda ir atšķirība starp vienādiem un hashCode Java?
vienāds pret hashCode Java valodā |
|
equals ir Java metode, kas darbojas līdzīgi operatoram==, kura mērķis ir pārbaudīt objekta identitāti, nevis objekta vienādību. | hashCode ir metode, ar kuru klase netieši vai tieši sadala klases instancē saglabātos datus vienā jaucējvērtībā. |
Lietošana | |
Metode ir vienāda, lai salīdzinātu divus objektus. | Šo metodi izmanto jaukšanā, lai izlemtu, kurā grupā objekts jāievieto. |
Kopsavilkums - vienāds ar hashCode Java versijā
Atšķirība starp vienādiem un hashCode Java ir tāda, ka vienāds tiek izmantots, lai salīdzinātu divus objektus, savukārt hashCode tiek izmantots jaukšanā, lai izlemtu, kurā grupā objekts ir jāiedala.