Verschil tussen gelijken en hashCode in Java

Inhoudsopgave:

Verschil tussen gelijken en hashCode in Java
Verschil tussen gelijken en hashCode in Java

Video: Verschil tussen gelijken en hashCode in Java

Video: Verschil tussen gelijken en hashCode in Java
Video: Выпуск 22. hashCode() и equals() - самое главное. 2024, November
Anonim

Belangrijk verschil – is gelijk aan vs hashCode in Java

De is gelijk aan de==operator, die is bedoeld om objectidentiteit te testen 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 opsplitst in een enkele hash-waarde, een 32-bits geheel getal met teken. Het belangrijkste verschil tussen is gelijk aan en hashCode in Java is dat de gelijken wordt gebruikt om twee objecten te vergelijken, terwijl de hashCode wordt gebruikt bij hashing om te beslissen in welke groep een object moet worden gecategoriseerd.

Wat is gelijk aan in Java?

De equals-methode wordt gebruikt om twee objecten te vergelijken. De standaard is gelijk aan methode is 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 equals-methode te overschrijven.

Verschil tussen is gelijk aan en hashCode in Java
Verschil tussen is gelijk aan en hashCode in Java

Figuur 01: Java-programma met gelijken

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

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

Er is geen methode gelijk aan in de klas Student. Daarom worden de gelijken in de klasse Object genoemd. True wordt alleen weergegeven als de objectreferentie naar hetzelfde object verwijst.

Verschil tussen is gelijk aan en hashCode in Java_Figuur 02
Verschil tussen is gelijk aan en hashCode in Java_Figuur 02

Figuur 02: Java-programma met overschreven is gelijk aan

Volgens het bovenstaande programma wordt de equals-methode overschreven. Er wordt een object aan de methode doorgegeven en het wordt gecast naar Student. Vervolgens worden de id-waarden gecontroleerd. Als de id-waarden vergelijkbaar zijn, wordt true geretourneerd. Zo niet, dan wordt false geretourneerd. De id's van s1 en s2 zijn vergelijkbaar. Het zal dus waar afdrukken. De id's van s1 en s3 zijn ook vergelijkbaar, dus het wordt true afgedrukt.

Wat is hashCode in Java?

De hashCode wordt gebruikt bij hashing om te beslissen in welke groep een object moet worden gecategoriseerd. Een groep objecten kan dezelfde hashCode delen. Een correcte hashfunctie kan objecten gelijkmatig in verschillende groepen verdelen.

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

Verschil tussen is gelijk aan en hashCode in Java_Figuur 03
Verschil tussen is gelijk aan en hashCode in Java_Figuur 03

Figuur 03: Studentenklas met gelijken en hashCode

Belangrijkste verschil tussen is gelijk aan en hashCode in Java
Belangrijkste verschil tussen is gelijk aan en hashCode in Java

Figuur 04: Hoofdprogramma

De klasse Student bevat de methodes equals en hashCode. De methode equals in de klasse Student krijgt een object. Als het object null is, wordt false geretourneerd. Als de klassen van de objecten niet hetzelfde zijn, wordt false geretourneerd. De id-waarden worden in beide objecten gecontroleerd. Als ze vergelijkbaar zijn, wordt de waarde true geretourneerd. Anders zal het false retourneren.

In het hoofdprogramma worden objecten s1 en s2 gemaakt. Bij het aanroepen van s1.equals(s2) zal true geven omdat de equals-methode wordt overschreven en de id-waarden van de twee objecten worden gecontroleerd. Ook al verwijzen ze naar twee objecten, het antwoord is waar omdat de id-waarden van s1 en s2 hetzelfde zijn. Aangezien de 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 verzamelingen zoals HashMap.

Wat is het verschil tussen is gelijk aan en hashCode in Java?

is gelijk aan hashCode in Java

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

Samenvatting – is gelijk aan vs hashCode in Java

Het verschil in gelijk aan en hashCode in Java is dat de gelijken wordt gebruikt om twee objecten te vergelijken, terwijl de hashCode wordt gebruikt bij hashing om te beslissen in welke groep een object moet worden gecategoriseerd.

Aanbevolen: