Unterschied zwischen Gleichheit und HashCode in Java

Inhaltsverzeichnis:

Unterschied zwischen Gleichheit und HashCode in Java
Unterschied zwischen Gleichheit und HashCode in Java

Video: Unterschied zwischen Gleichheit und HashCode in Java

Video: Unterschied zwischen Gleichheit und HashCode in Java
Video: Die equals() und hashCode() Methode | Java Tutorial für Fortgeschrittene 2024, November
Anonim

Schlüsselunterschied – gleich vs. hashCode in Java

Der Gleichheits-Operator ähnelt dem==-Operator, der eher auf Objektidentität als auf Objektgleichheit prüft. Der HashCode ist eine Methode, mit der eine Klasse die in einer Instanz der Klasse gespeicherten Daten implizit oder explizit in einen einzelnen Hash-Wert zerlegt, der eine 32-Bit-Ganzzahl mit Vorzeichen ist. Der Hauptunterschied zwischen equals und hashCode in Java besteht darin, dass equals verwendet wird, um zwei Objekte zu vergleichen, während hashCode beim Hashing verwendet wird, um zu entscheiden, in welche Gruppe ein Objekt kategorisiert werden soll.

Was ist gleich in Java?

Die equals-Methode wird verwendet, um zwei Objekte zu vergleichen. Die Standardmethode equals ist in der Objektklasse definiert. Diese Implementierung ähnelt dem Operator==. Die beiden Objektreferenzen sind nur dann gleich, wenn sie auf dasselbe Objekt zeigen. Es ist möglich, die equals-Methode zu überschreiben.

Unterschied zwischen equals und hashCode in Java
Unterschied zwischen equals und hashCode in Java

Abbildung 01: Java-Programm mit Gleichheit

Die Anweisung System.out.println(s1.equals(s2)) gibt die Antwort falsch, da s1 und s2 auf zwei verschiedene Objekte verweisen. Es ähnelte der Anweisung System.out.println(s1==s2);

Die Anweisung System.out.println(s1.equals(s3)) gibt die Antwort wahr, weil s1 und s3 auf dasselbe Objekt verweisen. Es ähnelte der Anweisung System.out.println(s1==s3);

In der Student-Klasse gibt es keine Equals-Methode. Daher wird das Gleiche in der Objektklasse aufgerufen. True wird nur angezeigt, wenn die Objektreferenz auf dasselbe Objekt zeigt.

Unterschied zwischen equals und hashCode in Java_Abbildung 02
Unterschied zwischen equals und hashCode in Java_Abbildung 02

Abbildung 02: Java-Programm mit überschriebenem Gleichheitszeichen

Gemäß obigem Programm wird die equals-Methode überschrieben. Ein Objekt wird an die Methode übergeben und in Student umgewandelt. Dann werden die ID-Werte überprüft. Wenn die ID-Werte ähnlich sind, wird wahr zurückgegeben. Wenn nicht, wird false zurückgegeben. Die IDs von s1 und s2 sind ähnlich. Es wird also wahr gedruckt. Die IDs von s1 und s3 sind ebenfalls ähnlich, daher wird es als wahr ausgegeben.

Was ist hashCode in Java?

Der HashCode wird beim Hashing verwendet, um zu entscheiden, in welche Gruppe ein Objekt kategorisiert werden soll. Eine Gruppe von Objekten kann denselben HashCode teilen. Eine korrekte Hash-Funktion kann Objekte gleichmäßig auf verschiedene Gruppen verteilen.

Ein korrekter HashCode kann folgende Eigenschaften haben. Angenommen, es gibt zwei Objekte als obj1 und obj2. Wenn obj1.equals(obj2) wahr ist, dann ist obj1.hashCode() gleich obj2.hashCode(). Wenn obj1.equals(obj2) falsch ist, ist es nicht notwendig, dass obj1.hashCode() ungleich obj2.hashCode() ist. Die beiden ungleichen Objekte können auch denselben HashCode haben.

Unterschied zwischen equals und hashCode in Java_Abbildung 03
Unterschied zwischen equals und hashCode in Java_Abbildung 03

Abbildung 03: Schülerklasse mit Gleichheit und HashCode

Hauptunterschied zwischen Equals und HashCode in Java
Hauptunterschied zwischen Equals und HashCode in Java

Abbildung 04: Hauptprogramm

Die Klasse Student enthält die Methoden equals und hashCode. Die equals-Methode in der Student-Klasse erhält ein Objekt. Wenn das Objekt null ist, wird es false zurückgeben. Wenn die Klassen der Objekte nicht gleich sind, wird false zurückgegeben. Die ID-Werte werden in beiden Objekten überprüft. Wenn sie ähnlich sind, wird wahr zurückgegeben. Andernfalls wird false zurückgegeben.

Im Hauptprogramm werden die Objekte s1 und s2 erstellt. Beim Aufruf von s1.equals(s2) wird true zurückgegeben, da die Methode equals überschrieben wird und die ID-Werte der beiden Objekte überprüft. Obwohl sie sich auf zwei Objekte beziehen, ist die Antwort wahr, da die id-Werte von s1 und s2 gleich sind. Da s1.equals(s2) wahr ist, sollte der HashCode von s1 und s2 gleich sein. Das Drucken des HashCodes von s1 und s2 ergibt denselben Wert. Die Methode hashCode kann mit Sammlungen wie HashMap verwendet werden.

Was ist der Unterschied zwischen Gleichheit und HashCode in Java?

gleich vs hashCode in Java

equals ist eine Methode in Java, die sich ähnlich verhält wie der Operator==, der eher auf Objektidentität als auf Objektgleichheit prüft. hashCode ist eine Methode, mit der eine Klasse die in einer Instanz der Klasse gespeicherten Daten implizit oder explizit in einen einzigen Hash-Wert zerlegt.
Nutzung
Die Methode equals wird verwendet, um zwei Objekte zu vergleichen. Die Methode wird beim Hashing verwendet, um zu entscheiden, in welche Gruppe ein Objekt platziert werden soll.

Zusammenfassung – gleich vs. hashCode in Java

Der Unterschied zwischen equals und hashCode in Java besteht darin, dass das equals verwendet wird, um zwei Objekte zu vergleichen, während der hashCode beim Hashing verwendet wird, um zu entscheiden, in welche Gruppe ein Objekt kategorisiert werden soll.

Empfohlen: