Verschil tussen gelijken en hashCode in Java

Belangrijkste verschil - is gelijk aan vs hashCode in Java
 

De gelijken is vergelijkbaar met de operator ==, die moet testen op objectidentiteit in plaats van objectgelijkheid. De hashCode is een methode waarmee een klasse de gegevens die zijn opgeslagen in een instantie van de klasse impliciet of expliciet opsplitsen in een enkele hash-waarde, een 32-bits geheel getal met een ondertekend teken. De belangrijk verschil tussen gelijken en hashCode in Java is dat de gelijken worden gebruikt om twee objecten te vergelijken, terwijl de hashCode wordt gebruikt bij het hashen om te beslissen in welke groep een object moet worden ingedeeld.

INHOUD

1. Overzicht en belangrijkste verschil
2. Wat is gelijk aan Java
3. Wat is hashCode in Java
4. Side-by-side vergelijking - is gelijk aan vs hashCode op Java in tabelvorm
5. Samenvatting

Wat is gelijk aan Java?

De gelijkwaardige methode wordt gebruikt om twee objecten te vergelijken. De standaardwaarde is gelijk aan methode wordt gedefinieerd in de objectklasse. Die implementatie is vergelijkbaar met de operator ==. De twee objectreferenties zijn alleen gelijk als ze naar hetzelfde object verwijzen. Het is mogelijk om de gelijkwaardigheidsmethode te overschrijven.

Figuur 01: Java-programma met gelijken

De instructie System.out.println (s1.equals (s2)) geeft het antwoord false omdat s1 en s2 verwijzen naar twee verschillende objecten. Het was vergelijkbaar met de verklaring, System.out.println (s1 == s2);

De instructie System.out.println (s1.equals (s3)) geeft het antwoord true, omdat s1 en s3 naar hetzelfde object verwijzen. Het was vergelijkbaar met de verklaring, System.out.println (s1 == s3);

Er is geen gelijkwaardige methode in de studentenklasse. Daarom worden de gelijken in de klasse Object aangeroepen. Waar wordt alleen weergegeven als de objectreferentie naar hetzelfde object verwijst.

Figuur 02: Java-programma met overschreven is gelijk aan

Volgens het bovenstaande programma wordt de gelijkwaardige methode onderdrukt. Een object wordt doorgegeven aan de methode, en het is type casted naar Student. Vervolgens worden de ID-waarden gecontroleerd. Als de id-waarden hetzelfde zijn, wordt true geretourneerd. Zo niet, dan zal het false opleveren. De id's van s1 en s2 zijn vergelijkbaar. Dus, het zal waar afdrukken. De id's van s1 en s3 zijn ook vergelijkbaar, dus wordt true afgedrukt.

Wat is hashCode in Java?

De hashCode wordt gebruikt bij het hashen om te beslissen naar welke groep een object moet worden gecategoriseerd. Een groep objecten kan dezelfde hashCode delen. Een correcte hash-functie kan objecten gelijkmatig in verschillende groepen verdelen.

Een correcte hashCode kan eigenschappen hebben als volgt. Neem aan dat er twee objecten zijn als obj1 en obj2. Als obj1.equals (obj2) waar is, is de obj1.hashCode () gelijk aan obj2.hashCode (). Als obj1.equals (obj2) niet waar is, is het niet nodig dat obj1.hashCode () niet gelijk is aan obj2.hashCode (). Het twee ongelijke object kan ook dezelfde hashCode hebben.

Figuur 03: Studentklasse met gelijken en hashCode

Figuur 04: Hoofdprogramma

De klasse Student bevat de gelijken- en hashCode-methoden. De gelijkwaardige methode in de studentenklasse ontvangt een object. Als het object null is, wordt false geretourneerd. Als de klassen van de objecten niet hetzelfde zijn, retourneert deze false. De ID-waarden worden in beide objecten gecontroleerd. Als ze vergelijkbaar zijn, zal het terugkeren naar waar. Anders zal het vals terugkeren.

In het hoofdprogramma worden de objecten s1 en s2 gemaakt. Bij het aanroepen van s1.equals (s2) geeft true omdat de methode equals (gelijk aan) overschreven wordt en de id-waarden van de twee objecten worden gecontroleerd. Hoewel ze verwijzen naar twee objecten, is het antwoord waar, omdat de id-waarden van s1 en s2 hetzelfde zijn. Aangezien s1.equals (s2) waar is, moet de hashcode van s1 en s2 gelijk zijn. Het afdrukken van de hashCode van s1 en s2 geeft dezelfde waarde. De hashCode-methode kan worden gebruikt met collecties zoals HashMap.

Wat is het verschil tussen gelijken en hashcode in Java?

is gelijk aan hashCode in Java

equals is een methode in Java die vergelijkbaar is met de ==-operator, namelijk testen op objectidentiteit in plaats van objectgelijkheid. hashCode is een methode waarmee een klasse de in een instantie van de klasse opgeslagen gegevens impliciet of expliciet opsplitst in een enkele hash-waarde.
 Gebruik
De methode equals wordt gebruikt om twee objecten te vergelijken. De methode wordt gebruikt bij het hashen om te bepalen in welke groep een object moet worden geplaatst.

Samenvatting - is gelijk aan vs hashCode in Java

Het verschil in gelijken en hashCode in Java is dat de gelijken worden gebruikt om twee objecten te vergelijken, terwijl de hashCode wordt gebruikt in het hashen om te beslissen in welke groep een object moet worden ingedeeld.

Referentie:

1. "Java HashCode ()." Wikipedia, Wikimedia Foundation, 17 februari 2018. Beschikbaar Hier 
2.Harold, Elliotte Rusty. "De methode Equals ()." De methode Equals (), 2 november 2001. Beschikbaar Hier