Pagkakaiba sa pagitan ng equals at hashCode sa Java

Talaan ng mga Nilalaman:

Pagkakaiba sa pagitan ng equals at hashCode sa Java
Pagkakaiba sa pagitan ng equals at hashCode sa Java

Video: Pagkakaiba sa pagitan ng equals at hashCode sa Java

Video: Pagkakaiba sa pagitan ng equals at hashCode sa Java
Video: Lesson 101: Using IR Remote to control TV, AC Bulb with Relay, DC Motor and Servo Motor 2024, Hulyo
Anonim

Key Difference – katumbas ng hashCode sa Java

Ang katumbas ay katulad ng==operator, na kung saan ay upang subukan ang pagkakakilanlan ng bagay sa halip na pagkakapantay-pantay ng bagay. Ang hashCode ay isang paraan kung saan ang isang klase ay implicitly o tahasang pinaghiwa-hiwalay ang data na nakaimbak sa isang instance ng klase sa isang solong hash value, na isang 32 bit signed integer. Ang pangunahing pagkakaiba sa pagitan ng equals at hashCode sa Java ay ang equals ay ginagamit upang paghambingin ang dalawang object habang ang hashCode ay ginagamit sa pag-hash para magpasya kung saang grupo ang isang object dapat ikategorya.

Ano ang katumbas sa Java?

Ang equals method ay ginagamit upang ihambing ang dalawang bagay. Ang default equals method ay tinukoy sa object class. Ang pagpapatupad na iyon ay katulad ng==operator. Ang dalawang object reference ay pantay lamang kung sila ay tumuturo sa parehong bagay. Posibleng i-override ang equals na paraan.

Pagkakaiba sa pagitan ng equals at hashCode sa Java
Pagkakaiba sa pagitan ng equals at hashCode sa Java

Figure 01: Java Program na may katumbas

Ang statement na System.out.println(s1.equals(s2)) ay magbibigay ng sagot na mali dahil ang s1 at s2 ay tumutukoy sa dalawang magkaibang bagay. Ito ay katulad ng pahayag, System.out.println(s1==s2);

Ang statement na System.out.println(s1.equals(s3)) ay magbibigay ng sagot na totoo dahil ang s1 at s3 ay tumutukoy sa parehong bagay. Ito ay katulad ng pahayag, System.out.println(s1==s3);

Walang katumbas na pamamaraan sa klase ng Mag-aaral. Samakatuwid, ang mga katumbas sa klase ng Bagay ay tinatawag. Ang True ay ipinapakita lamang kung ang object reference ay nakaturo sa parehong bagay.

Pagkakaiba sa pagitan ng equals at hashCode sa Java_Figure 02
Pagkakaiba sa pagitan ng equals at hashCode sa Java_Figure 02

Figure 02: Java Program with Overridden equals

Ayon sa programa sa itaas, ang equals na paraan ay na-override. Ang isang bagay ay ipinasa sa pamamaraan, at ito ay uri na na-cast sa Mag-aaral. Pagkatapos, susuriin ang mga halaga ng id. Kung magkapareho ang mga halaga ng id, babalik ito ng totoo. Kung hindi, ito ay magbabalik ng mali. Ang mga id ng s1 at s2 ay magkatulad. Kaya, ito ay magpi-print ng totoo. Magkapareho rin ang mga id ng s1 at s3, kaya magpi-print ito ng true.

Ano ang hashCode sa Java?

Ang hashCode ay ginagamit sa pag-hash upang magpasya kung saang pangkat ang isang bagay ay dapat ikategorya. Ang isang pangkat ng mga bagay ay maaaring magbahagi ng parehong hashCode. Ang isang tamang pag-andar ng pag-hash ay maaaring pantay na maipamahagi ang mga bagay sa iba't ibang grupo.

Ang tamang hashCode ay maaaring magkaroon ng mga katangian tulad ng sumusunod. Ipagpalagay na mayroong dalawang bagay bilang obj1 at obj2. Kung totoo ang obj1.equals(obj2), ang obj1.hashCode() ay katumbas ng obj2.hashCode(). Kung ang obj1.equals(obj2) ay false, hindi kinakailangan na ang obj1.hashCode() ay hindi katumbas ng obj2.hashCode(). Ang dalawang hindi pantay na bagay ay maaaring magkaroon din ng parehong hashCode.

Pagkakaiba sa pagitan ng equals at hashCode sa Java_Figure 03
Pagkakaiba sa pagitan ng equals at hashCode sa Java_Figure 03

Figure 03: Klase ng mag-aaral na may katumbas at hashCode

Pangunahing Pagkakaiba sa pagitan ng equals at hashCode sa Java
Pangunahing Pagkakaiba sa pagitan ng equals at hashCode sa Java

Figure 04: Pangunahing Programa

Ang klase ng Mag-aaral ay naglalaman ng mga katumbas at hashCode na pamamaraan. Ang equals method sa klase ng Student ay makakatanggap ng object. Kung ang bagay ay null, ito ay magbabalik ng false. Kung ang mga klase ng mga bagay ay hindi pareho, ito ay magbabalik ng false. Ang mga halaga ng id ay naka-check sa parehong mga bagay. Kung magkapareho sila, babalik itong totoo. Kung hindi, ito ay magbabalik ng false.

Sa pangunahing programa, ang mga bagay na s1 at s2 ay nilikha. Kapag ang pagtawag sa s1.equals(s2) ay magbibigay ng true dahil ang equals na paraan ay na-override at sinusuri nito ang mga halaga ng id ng dalawang bagay. Kahit na dalawang bagay ang tinutukoy nila, totoo ang sagot dahil pareho ang mga halaga ng id ng s1 at s2. Dahil totoo ang s1.equals(s2), dapat na pantay ang hashCode ng s1 at s2. Ang pag-print ng hashCode ng s1 at s2 ay nagbibigay ng parehong halaga. Maaaring gamitin ang paraan ng hashCode sa Mga Koleksyon gaya ng HashMap.

Ano ang Pagkakaiba sa pagitan ng equals at hashCode sa Java?

katumbas vs hashCode sa Java

Ang equals ay isang paraan sa Java na gumaganap na katulad ng==operator, na kung saan ay upang subukan ang pagkakakilanlan ng bagay sa halip na pagkakapantay-pantay ng bagay. Ang hashCode ay isang paraan kung saan tahasan o tahasang hinahati ng isang klase ang data na nakaimbak sa isang instance ng klase sa iisang hash value.
Paggamit
Ang paraang katumbas ay ginagamit upang ihambing ang dalawang bagay. Ginagamit ang paraan sa pag-hash upang magpasya kung saang grupo dapat ilagay ang isang bagay.

Buod – katumbas ng hashCode sa Java

Ang pagkakaiba sa equals at hashCode sa Java ay ang equals ay ginagamit upang paghambingin ang dalawang object habang ang hashCode ay ginagamit sa pag-hash para magpasya kung saang grupo dapat ikategorya ang isang object.

Inirerekumendang: