Avaimen ero - on yhtä suuri kuin Java: n hashCode
Equals on samanlainen kuin == -operaattori, jonka on testattava kohteen identiteetti eikä objektin tasa-arvo. HashCode on menetelmä, jolla luokka hajottaa implisiittisesti tai nimenomaisesti luokan ilmentymään tallennetut tiedot yhdeksi hash-arvoksi, joka on 32-bittinen allekirjoitettu kokonaisluku. Keskeinen ero Java-yhtälöiden ja hashCode-koodien välillä on se, että yhtäläisiä käytetään kahden objektin vertaamiseen, kun taas hashCode-koodia käytetään hajautuksessa päättämään, mihin ryhmään objekti tulisi luokitella.
SISÄLLYS
1. Yleiskatsaus ja avainero
2. Mikä on sama kuin Java
3. Mikä on hashCode Java-ohjelmassa
4. Vertailu rinnakkain - sama kuin vs. HashCode Java-muodossa taulukkomuodossa
5. Yhteenveto
Mitä on yhtä suuri Java?
Equals-menetelmää käytetään kahden objektin vertaamiseen. Oletusarvoinen menetelmä on määritelty objektiluokassa. Tämä toteutus on samanlainen kuin == -operaattori. Nämä kaksi objektiviittausta ovat samat vain, jos ne osoittavat samaan kohteeseen. Equals-menetelmä on mahdollista ohittaa.
Kuva 01: Java-ohjelma yhtäläisillä
Käsky System.out.println (s1.equals (s2)) antaa vastauksen vääräksi, koska s1 ja s2 viittaavat kahteen eri objektiin. Se oli samanlainen kuin lause System.out.println (s1 == s2);
Käsky 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);
Opiskelija-luokassa ei ole yhtäläistä menetelmää. Siksi Object-luokan yhtäläisiä kutsutaan. True näytetään vain, jos objektiviittaus osoittaa samaan objektiin.
Kuva 02: Ohitettu Java-ohjelma on yhtä suuri
Yllä olevan ohjelman mukaan equals-menetelmä ohitetaan. Objekti välitetään menetelmälle ja se kirjoitetaan tyypille Student. Sitten id-arvot tarkistetaan. Jos id-arvot ovat samanlaiset, se palauttaa arvon true. Jos ei, se palauttaa epätosi. S1: n ja s2: n id: t ovat samanlaisia. Joten se tulostaa totta. Myös s1: n ja s3: n id: t ovat samanlaisia, joten se tulostaa totta.
Mikä on hashCode Java-ohjelmassa?
HashCodea käytetään hajautuksessa päättämään, mihin ryhmään objekti tulisi luokitella. Ryhmä objekteja voi jakaa saman hashCode-koodin. Oikea hajautusfunktio voi jakaa objektit tasaisesti eri ryhmiin.
Oikealla hashCodella voi olla seuraavat ominaisuudet. Oletetaan, että objekteja obj1 ja obj2 on kaksi. Jos obj1.equals (obj2) on tosi, 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 sama kuin obj2.hashCode (). Kummallakin eriarvoisella objektilla voi myös olla sama hashCode.
Kuva 03: Opiskelijaluokka, jossa on yhtäsuuri ja hashCode
Kuva 04: Pääohjelma
Opiskelijaluokka sisältää equals- ja hashCode-menetelmät. Opiskelija-luokan Equals-menetelmä saa objektin. Jos objekti on tyhjä, se palauttaa arvon false. Jos objektien luokat eivät ole samat, se palauttaa arvon false. Id-arvot tarkistetaan molemmissa kohteissa. Jos ne ovat samanlaisia, se palaa totta. Muuten se palauttaa väärän.
Pääohjelmassa luodaan objektit s1 ja s2. Kun soitat s1.equals (s2) antaa totta, koska equals-menetelmä ohitetaan ja se tarkistaa kahden objektin id-arvot. Vaikka ne viittaavat kahteen objektiin, vastaus on totta, koska s1: n ja s2: n id-arvot ovat samat. Koska s1.equals (s2) on totta, s1: n ja s2: n hashCode-arvon on oltava sama. S1: n ja s2: n hashCode-tulostus antaa saman arvon. HashCode-menetelmää voidaan käyttää kokoelmissa, kuten HashMap.
Mikä on ero yhtäläisten ja hashCode-koodien välillä Java-ohjelmassa?
Erilainen artikkeli keskellä taulukkoa
equals vs hashCode Java-sovelluksessa |
|
equals on Java-menetelmä, joka toimii samankaltaisesti kuin == -operaattori, jonka tarkoituksena on testata kohteen identiteetti objektin tasa-arvon sijasta. | hashCode on menetelmä, jolla luokka jakaa implisiittisesti tai nimenomaisesti luokan esiintymään tallennetut tiedot yhdeksi hash-arvoksi. |
Käyttö | |
Menetelmää yhtä käytetään kahden objektin vertaamiseen. | Menetelmää käytetään hajautuksessa päättämään, mihin ryhmään objekti tulisi sijoittaa. |
Yhteenveto - sama kuin hashCode Java-sovelluksessa
Java-yhtälöiden ja hashCode-erojen ero on se, että yhtäläisiä käytetään kahden objektin vertaamiseen, kun taas hashCode-koodia käytetään hajautuksessa päättämään, mihin ryhmään objekti tulisi luokitella.