Yhtälö on samanlainen kuin == operaattori, jonka on tarkoitus testata objektin identiteettiä eikä objektin tasa-arvoa. Hajautuskoodi on menetelmä, jolla luokka erittelee implisiittisesti tai eksplisiittisesti luokan esiintymissä tallennetut tiedot yhdeksi hash-arvoksi, joka on 32-bittinen allekirjoitettu kokonaisluku. avainero yhtäläisen ja hashCode: n välillä Jaava onko tuo yhtälöä käytetään kahden objektin vertailuun, kun taas hashCodea käytetään hashissa päättämään, mihin ryhmään objekti luokitellaan.
1. Yleiskatsaus ja keskeiset erot
2. Mikä on sama kuin Java
3. Mikä on hashCode Java-järjestelmässä
4. Vertailu rinnakkain - vastaa vs. hash-koodia Java-taulukossa
5. Yhteenveto
Equals-menetelmää käytetään kahden objektin vertaamiseen. Oletusarvoinen yhtälömenetelmä on määritelty objektiluokassa. Tämä toteutus on samanlainen kuin == operaattori. Kaksi kohdeviittausta ovat yhtä suuret vain, jos ne osoittavat samaan objektiin. Equals-menetelmä on mahdollista ohittaa.
Kuva 01: Java-ohjelma yhtäläisten kanssa
Lause System.out.println (s1.equals (s2)) antaa vastauksen väärin, koska s1 ja s2 viittaavat kahteen eri kohteeseen. Se oli samanlainen kuin lause, System.out.println (s1 == s2);
Lause System.out.println (s1.equals (s3)) antaa vastauksen totta, koska s1 ja s3 viittaavat samaan objektiin. Se oli samanlainen kuin lause, System.out.println (s1 == s3);
Opiskelijaluokassa ei ole yhtäläistä menetelmää. Siksi Object-luokan yhtälöitä kutsutaan. Tosi näkyy vain, jos kohdeviittaus osoittaa samaan esineeseen.
Kuva 02: Java-ohjelma korvattujen yhtälöiden kanssa
Yllä olevan ohjelman mukaan yhtäläinen menetelmä ohitetaan. Objekti siirretään menetelmälle, ja se tyyppi heitetään Opiskelijalle. Sitten id-arvot tarkistetaan. Jos id-arvot ovat samanlaisia, se palaa totta. Jos ei, se palauttaa väärin. S1: n ja s2: n ID: t ovat samanlaisia. Joten, se tulostaa totta. Myös s1: n ja s3: n tunnukset ovat samankaltaisia, joten tulostaa totta.
Hajautuskoodia käytetään hajautuksessa päätettäessä mihin ryhmään esine luokitellaan. Objektiryhmä voi jakaa saman hashCode-koodin. Oikea hajautustoiminto voi jakaa objektit tasaisesti eri ryhmiin.
Oikealla hash-koodilla voi olla seuraavat ominaisuudet. Oletetaan, että objekteja on kaksi, kuten obj1 ja obj2. Jos obj1.equals (obj2) on totta, niin obj1.hashCode () on yhtä suuri kuin obj2.hashCode (). Jos obj1.equals (obj2) on väärä, ei ole välttämätöntä, että obj1.hashCode () ei ole yhtä suuri kuin obj2.hashCode (). Kahdessa epätasa-arvoisessa objektissa voi myös olla sama hashCode.
Kuva 03: Opiskelijaluokka yhtäläisillä ja hash-koodeilla
Kuva 04: Pääohjelma
Opiskelijaluokka sisältää yhtäläiset ja hashCode-menetelmät. Opiskelijaluokan yhtäläinen menetelmä vastaanottaa objektin. Jos objekti on nolla, se palauttaa väärän. Jos objektien luokat eivät ole samat, se palauttaa väärin. Tunnusarvot tarkistetaan molemmissa kohteissa. Jos ne ovat samanlaisia, se palaa totta. Muuten se palauttaa väärin.
Pääohjelmassa luodaan objektit s1 ja s2. Soitettaessa s1.equals (s2) antaa tosi, koska equals-menetelmä ohitetaan ja se tarkistaa kahden objektin id-arvot. Vaikka ne viittaavat kahteen esineeseen, vastaus on totta, koska id: n arvot s1 ja s2 ovat samat. Koska s1.equals (s2) on totta, s1: n ja s2: n hash-koodin tulisi olla yhtä suuret. S1: n ja s2: n hash-koodin tulostaminen antaa saman arvon. HashCode-menetelmää voidaan käyttää kokoelmien, kuten HashMap, kanssa.
yhtä suuri kuin Java-hashCode | |
equals on Java-menetelmä, joka toimii samalla tavalla kuin == operaattori, jonka tarkoituksena on testata objektin identiteetti eikä objektin tasa-arvoa. | hashCode on menetelmä, jolla luokka hajottaa implisiittisesti tai eksplisiittisesti luokan esiintymässä tallennetut tiedot yhdeksi hash-arvoksi. |
Käyttö | |
Menetelmää equals käytetään kahden objektin vertailuun. | Menetelmää käytetään hajautuksessa päätettäessä mihin ryhmään esine sijoitetaan. |
Ero Javaissa on yhtä suuri ja hashCode siinä, että yhtäläisiä käytetään kahden objektin vertaamiseen, kun taas hashCodea käytetään hashissa päättämään, mihin ryhmään objekti luokitellaan.
1. ”Java HashCode ().” Wikipedia, Wikimedia Foundation, 17. helmikuuta 2018. Saatavilla täältä
2.Harold, Elliotte Rusty. ”Equals () -menetelmä.” Equals () -menetelmä, 2. marraskuuta 2001. Saatavilla täältä