Tofauti Kati ya sawa na hashCode katika Java

Orodha ya maudhui:

Tofauti Kati ya sawa na hashCode katika Java
Tofauti Kati ya sawa na hashCode katika Java

Video: Tofauti Kati ya sawa na hashCode katika Java

Video: Tofauti Kati ya sawa na hashCode katika Java
Video: Data Structures Summary 2024, Novemba
Anonim

Tofauti Muhimu - ni sawa na hashCode katika Java

Sawa ni sawa na opereta==, ambayo ni kujaribu utambulisho wa kitu badala ya usawa wa kitu. HashCode ni njia ambayo kwayo darasa huchanganua data iliyohifadhiwa katika mfano wa darasa kuwa thamani moja ya heshi, ambayo ni nambari kamili iliyotiwa saini 32-bit. Tofauti kuu kati ya usawa na hashCode katika Java ni kwamba sawa hutumiwa kulinganisha vitu viwili wakati hashCode inatumiwa katika hashi kuamua ni kundi gani la kitu kinapaswa kuainishwa.

Ni nini kinacholingana katika Java?

Njia ya usawa hutumiwa kulinganisha vitu viwili. Njia chaguo-msingi ya usawa imefafanuliwa katika darasa la kitu. Utekelezaji huo ni sawa na==operator. Marejeleo ya vitu viwili ni sawa ikiwa tu yanaelekeza kwa kitu kimoja. Inawezekana kubatilisha mbinu ya usawa.

Tofauti kati ya sawa na hashCode katika Java
Tofauti kati ya sawa na hashCode katika Java

Kielelezo 01: Programu ya Java yenye sawa

Taarifa System.out.println(s1.equals(s2)) itatoa jibu kuwa sivyo kwa sababu s1 na s2 zinarejelea vitu viwili tofauti. Ilikuwa sawa na taarifa, System.out.println(s1==s2);

Taarifa System.out.println(s1.equals(s3)) itatoa jibu kuwa kweli kwa sababu s1 na s3 zinarejelea kitu kimoja. Ilikuwa sawa na taarifa, System.out.println(s1==s3);

Hakuna mbinu ya usawa katika darasa la Mwanafunzi. Kwa hivyo, sawa katika darasa la Kitu huitwa. Kweli huonyeshwa tu ikiwa marejeleo ya kitu yanaelekeza kwa kitu sawa.

Tofauti kati ya sawa na hashCode katika Java_Figure 02
Tofauti kati ya sawa na hashCode katika Java_Figure 02

Kielelezo 02: Programu ya Java yenye usawa Zilizobatilishwa

Kulingana na mpango ulio hapo juu, mbinu ya usawa imebatilishwa. Kitu hupitishwa kwa mbinu, na hupigwa chapa kwa Mwanafunzi. Kisha, maadili ya kitambulisho yanakaguliwa. Ikiwa thamani za kitambulisho zinafanana, itarudi kuwa kweli. Ikiwa sivyo, itarudi uwongo. Vitambulisho vya s1 na s2 vinafanana. Kwa hivyo, itachapisha kweli. Vitambulisho vya s1 na s3 pia vinafanana, kwa hivyo vitachapishwa kweli.

HashCode ni nini katika Java?

Msimbo wa reli hutumika katika hashi kuamua ni kundi gani kitu kinapaswa kuainishwa. Kikundi cha vitu kinaweza kushiriki hashCode sawa. Kitendakazi sahihi cha heshi kinaweza kusambaza vitu sawasawa katika vikundi tofauti.

Msimbo sahihi wa reli unaweza kuwa na sifa zifuatazo. Fikiria kuwa kuna vitu viwili kama obj1 na obj2. Ikiwa obj1.equals(obj2) ni kweli, basi obj1.hashCode() ni sawa na obj2.hashCode(). Ikiwa obj1.equals(obj2) ni uongo, si lazima kwamba obj1.hashCode() si sawa na obj2.hashCode(). Vipengee viwili visivyo na usawa vinaweza pia kuwa na hashCode sawa.

Tofauti kati ya sawa na hashCode katika Java_Figure 03
Tofauti kati ya sawa na hashCode katika Java_Figure 03

Kielelezo 03: Darasa la wanafunzi lenye viwango sawa na hashCode

Tofauti muhimu kati ya usawa na hashCode katika Java
Tofauti muhimu kati ya usawa na hashCode katika Java

Kielelezo 04: Mpango Mkuu

Darasa la Mwanafunzi lina njia sawa na za hashCode. Mbinu ya usawa katika darasa la Mwanafunzi itapokea kitu. Ikiwa kipengee ni batili, kitarudi kuwa sivyo. Ikiwa madarasa ya vitu hayafanani, itarudi kuwa ya uwongo. Thamani za kitambulisho zimeangaliwa katika vitu vyote viwili. Ikiwa zinafanana, itarudi kweli. Vinginevyo itarudi sivyo.

Katika mpango mkuu, vipengee s1 na s2 huundwa. Wakati wa kupiga simu s1.equals(s2) itatoa kweli kwa sababu njia ya usawa imebatilishwa na inakagua maadili ya kitambulisho cha vitu hivyo viwili. Ingawa wanarejelea vitu viwili, jibu ni kweli kwa sababu maadili ya kitambulisho cha s1 na s2 ni sawa. Kama s1.equals(s2) ni kweli, hashCode ya s1 na s2 inapaswa kuwa sawa. Kuchapisha hashCode ya s1 na s2 kunatoa thamani sawa. Mbinu ya hashCode inaweza kutumika na Mikusanyiko kama vile HashMap.

Ni tofauti gani kati ya sawa na hashCode katika Java?

sawa na hashCode katika Java

equals ni mbinu katika Java inayofanya kazi sawa na==opereta, ambayo ni kupima utambulisho wa kitu badala ya usawa wa kitu. hashCode ni mbinu ambayo kwayo darasa huchanganua data iliyohifadhiwa katika mfano wa darasa katika thamani moja ya heshi.
Matumizi
Njia ya usawa hutumika kulinganisha vitu viwili. Mbinu inatumika katika hashing kuamua ni kikundi kipi kinapaswa kuwekwa kwenye kitu.

Muhtasari – ni sawa na hashCode katika Java

Tofauti ya usawa na hashCode katika Java ni kwamba sawa hutumika kulinganisha vitu viwili ilhali Msimbo wa hashi hutumika katika kuharakisha kuamua ni kundi gani kitu kinapaswa kuainishwa.

Ilipendekeza: