Ero yhtälöiden ja hashCoden välillä Javassa

Sisällysluettelo:

Ero yhtälöiden ja hashCoden välillä Javassa
Ero yhtälöiden ja hashCoden välillä Javassa

Video: Ero yhtälöiden ja hashCoden välillä Javassa

Video: Ero yhtälöiden ja hashCoden välillä Javassa
Video: Метод деления пополам (теория, примеры и коды) | Численные методы 2024, Marraskuu
Anonim

Key Difference – sama vs hashCode Javassa

Equas on samanlainen kuin==-operaattori, jonka tarkoituksena on testata objektin identiteettiä objektin tasa-arvon sijaan. HashCode on menetelmä, jolla luokka implisiittisesti tai eksplisiittisesti pilkkoo luokan esiintymään tallennetun tiedon yhdeksi hash-arvoksi, joka on 32-bittinen etumerkillinen kokonaisluku. Keskeinen ero yhtäläisten ja Javassa hashCoden välillä on se, että yhtäläisyyttä käytetään kahden objektin vertaamiseen, kun taas hashCodea käytetään hajauttamisessa päättämään, mihin ryhmään objekti pitäisi luokitella.

Mikä on yhtä kuin Javassa?

Yhtäsuuruusmenetelmää käytetään kahden objektin vertailuun. Oletusarvo-menetelmä on määritetty objektiluokassa. Tämä toteutus on samanlainen kuin==-operaattori. Kaksi objektiviittausta ovat samanarvoisia vain, jos ne osoittavat samaan objektiin. On mahdollista ohittaa yhtä kuin menetelmä.

Ero yhtälöiden ja hashCoden välillä Javassa
Ero yhtälöiden ja hashCoden välillä Javassa

Kuva 01: Java-ohjelma, jossa on yhtä kuin

Lauske System.out.println(s1.equals(s2)) antaa vastauksen epätosi, koska s1 ja s2 viittaavat kahteen eri kohteeseen. Se oli samanlainen kuin lauseke System.out.println(s1==s2);

Lauske System.out.println(s1.equals(s3)) antaa vastauksen tosi, koska s1 ja s3 viittaavat samaan objektiin. Se oli samanlainen kuin lauseke System.out.println(s1==s3);

Opiskelijaluokassa ei ole yhtäläisyysmenetelmää. Siksi Object-luokan yhtäläisiä kutsutaan. True näytetään vain, jos objektiviittaus osoittaa samaan objektiin.

Ero yhtälöiden ja hashCoden välillä Javassa_Kuva 02
Ero yhtälöiden ja hashCoden välillä Javassa_Kuva 02

Kuva 02: Java-ohjelma ohitettuna on yhtä kuin

Yllä olevan ohjelman mukaan yhtäläisyysmenetelmä ohitetaan. Objekti välitetään menetelmälle, ja se tyypiltään heitetään opiskelijalle. Sitten id-arvot tarkistetaan. Jos id-arvot ovat samanlaiset, se palauttaa tosi. Jos ei, se palauttaa epätosi. S1:n ja s2:n tunnukset ovat samanlaiset. Joten se tulostuu totta. Myös s1:n ja s3:n tunnukset ovat samanlaisia, joten se tulostuu tosi.

Mikä on hashCode Javassa?

HashCodea käytetään hajautustyössä päättämään, mihin ryhmään objekti pitäisi luokitella. Objektien ryhmällä voi olla sama hashCode. Oikea hajautusfunktio voi jakaa objektit tasaisesti eri ryhmiin.

Oikealla hashCode-koodilla voi olla seuraavat ominaisuudet. Oletetaan, että on olemassa kaksi objektia obj1 ja obj2. Jos obj1.equals(obj2) on tosi, niin obj1.hashCode() on yhtä suuri kuin obj2.hashCode(). Jos obj1.equals(obj2) on epätosi, ei ole välttämätöntä, että obj1.hashCode() ei ole sama kuin obj2.hashCode(). Kahdella eri objektilla voi myös olla sama hashCode.

Ero yhtälöiden ja hashCoden välillä Javassa_Kuva 03
Ero yhtälöiden ja hashCoden välillä Javassa_Kuva 03

Kuva 03: Opiskelijaluokka, jossa on yhtäläiset ja hashCode

Keskeinen ero yhtälöiden ja hashCoden välillä Javassa
Keskeinen ero yhtälöiden ja hashCoden välillä Javassa

Kuva 04: Pääohjelma

Opiskelija-luokka sisältää yhtälö- ja hashCode-metodit. Opiskelija-luokan yhtäläisyysmenetelmä saa objektin. Jos objekti on tyhjä, se palauttaa epätosi. Jos objektien luokat eivät ole samat, se palauttaa epätosi. Id-arvot tarkistetaan molemmissa objekteissa. Jos ne ovat samanlaisia, se on totta. Muussa tapauksessa se palauttaa epätosi.

Pääohjelmassa luodaan objektit s1 ja s2. Kutsuttaessa s1.equals(s2) antaa true, koska yhtäläisyysmenetelmä ohitetaan ja se tarkistaa kahden objektin id-arvot. Vaikka ne viittaavat kahteen objektiin, vastaus on tosi, koska s1:n ja s2:n id-arvot ovat samat. Koska s1.equals(s2) on tosi, s1:n ja s2:n hashCode:n tulee olla yhtä suuri. Tulostus hashCode s1 ja s2 antaa saman arvon. HashCode-menetelmää voidaan käyttää kokoelmissa, kuten HashMap.

Mitä eroa on yhtäläisten ja hashCoden välillä Javassa?

saa vs hashCode Javassa

equals on Java-menetelmä, joka toimii samalla tavalla kuin==-operaattori, jonka tarkoituksena on testata objektin identiteettiä objektin tasa-arvon sijaan. hashCode on menetelmä, jolla luokka implisiittisesti tai eksplisiittisesti jakaa luokan esiintymään tallennetun tiedon yhdeksi hajautusarvoksi.
Käyttö
Menetelmää equals käytetään kahden objektin vertailuun. Menetelmää käytetään hajautustyössä päättämään, mihin ryhmään objekti tulee sijoittaa.

Yhteenveto – sama vs hashCode Javassa

Javan yhtäläisten ja hashCode-arvojen ero on siinä, että yhtäläisyyttä käytetään kahden objektin vertailuun, kun taas hashCodea käytetään hajautustyössä päättämään, mihin ryhmään objekti pitäisi luokitella.

Suositeltava: