Unterschied zwischen equals und hashCode in Java

Schlüsseldifferenz - gleich vs Hashcode in Java
 

Das Gleiche ist dem Operator == ähnlich, der auf Objektidentität statt auf Objektgleichheit zu prüfen ist. Der Hash-Code ist eine Methode, mit der eine Klasse die in einer Instanz der Klasse gespeicherten Daten implizit oder explizit in einen einzelnen Hash-Wert (32-Bit-Ganzzahl mit Vorzeichen) zerlegt. Das Hauptunterschied zwischen Gleichem und Hashcode in Java ist dass Das Gleiche wird verwendet, um zwei Objekte zu vergleichen, während der Hash-Code beim Hashing verwendet wird, um zu entscheiden, in welche Gruppe ein Objekt kategorisiert werden soll.

INHALT

1. Übersicht und Schlüsseldifferenz
2. Was ist in Java gleich?
3. Was ist Hashcode in Java?
4. Side-by-Side-Vergleich - Entspricht Hash-Code in Java in tabellarischer Form
5. Zusammenfassung

Was ist in Java gleich??

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

Abbildung 01: Java-Programm mit Gleichem

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

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

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

Abbildung 02: Java-Programm mit überschriebenen gleich

Gemäß dem obigen Programm wird die Equals-Methode überschrieben. Ein Objekt wird an die Methode übergeben und der Typ wird in Student umgewandelt. Dann werden die ID-Werte geprüft. Wenn die id-Werte ähnlich sind, wird true zurückgegeben. Wenn nicht, wird falsch zurückgegeben. Die IDs von S1 und S2 sind ähnlich. Es wird also richtig gedruckt. Die IDs von s1 und s3 sind ebenfalls ähnlich, daher wird der Wert true ausgegeben.

Was ist Hashcode in Java??

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

Ein korrekter hashCode kann folgende Eigenschaften haben. Angenommen, es gibt zwei Objekte wie obj1 und obj2. Wenn obj1.equals (obj2) wahr ist, ist obj1.hashCode () gleich obj2.hashCode (). Wenn obj1.equals (obj2) falsch ist, ist es nicht notwendig, dass obj1.hashCode () nicht gleich obj2.hashCode () ist. Die beiden ungleichen Objekte können auch den gleichen Hash-Code haben.

Abbildung 03: Studentenklasse mit equals und hashCode

Abbildung 04: Hauptprogramm

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

Im Hauptprogramm werden die Objekte s1 und s2 angelegt. Beim Aufruf von s1.equals (s2) wird true ausgegeben, da die Methode equals überschrieben wird und die ID-Werte der beiden Objekte überprüft werden. 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 den gleichen Wert. Die hashCode-Methode kann mit Collections wie HashMap verwendet werden.

Was ist der Unterschied zwischen equals und hashCode in Java??

entspricht Hash-Code in Java

equals ist eine Methode in Java, die dem Operator == ähnelt und die Objektidentität anstelle der Objektgleichheit prüft. hashCode ist eine Methode, mit der eine Klasse die in einer Instanz der Klasse gespeicherten Daten implizit oder explizit in einen einzelnen Hashwert aufspaltet.
 Verwendungszweck
Die Methode equals wird verwendet, um zwei Objekte zu vergleichen. Die Methode wird beim Hashing verwendet, um zu entscheiden, in welche Gruppe ein Objekt eingefügt werden soll.

Zusammenfassung - gleich vs Hashcode in Java

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

Referenz:

1. "Java HashCode ()". Wikipedia, Wikimedia Foundation, 17. Februar 2018. Hier verfügbar 
2.Harold, Elliotte Rusty. „Die Equals () -Methode.“ Die Equals () -Methode, 2. November 2001. Hier verfügbar