Heim  >  Artikel  >  Java  >  Zusammenfassung der Verwendung von equal und hashCode

Zusammenfassung der Verwendung von equal und hashCode

PHP中文网
PHP中文网Original
2017-06-20 16:50:321397Durchsuche

一 equal

Die Methode equal ist auf Objektebene und vergleicht standardmäßig die Speicheradressen zweier Objekte, um die tatsächlichen zu vergleichen Der Inhalt von Objekten vergleicht im Allgemeinen, ob die Attributwerte derselben Attribute desselben Objekttyps gleich sind.

Zwei HashCodes

1. Hash-Tabelle

Eine Hash-Tabelle ist ein Array, Each Das Element im Array ist eine einseitig verknüpfte Liste. Die Knoten in derselben einseitig verknüpften Liste haben die gleichen Attribute. Der Attributwert ist der Index des Arrays Wert. .

2. Die Funktion und Bedeutung des Hashcode-Hashwerts

Bevor HashCode generiert wird, muss der Abrufsatz einzeln verglichen werden. und die Abfrageeffizienz ist gering. Wenn die Elemente mit demselben Attributwert in der Sammlung nach einem bestimmten Attribut gruppiert werden, wird zentral gespeichert. Bei der Abfrage wird zunächst der Wert des Attributs des Abfrageobjekts abgerufen und die entsprechende Gruppe erstellt Basierend auf dem Wert, der das Problem erheblich reduziert. Es erhöht den Abfrageumfang und verbessert die Effizienz der Abfrage. Dies ist der Hintergrund von hashCode.

Der Hashcode zweier Objekte ist gleich, was nur darauf hinweist, dass sie zur selben Gruppe gehören. Es ist nicht garantiert, dass sie identisch sind. Sie müssen auch die Speicheradressen der beiden vergleichen Objekte oder übergeben equals vergleicht die spezifischen Inhalte. Nur wenn dieses Element erfüllt ist, kann festgestellt werden, dass die beiden Objekte gleich sind.

Aus dem Obigen ist ersichtlich, dass in der Hash-Tabelle dieselben zwei Objekte denselben Hash-Wert haben müssen.

3.hashCode()-Methode

Die hashCode()-Methode ist auf Objektebene und generiert standardmäßig einen int-Wert basierend auf dem Speicher Die Adresse des Objekts entspricht einer Eins-zu-Eins-Entsprechung, da dieselben beiden Objekte nur durch Gleichheit bestätigt werden, um sicherzustellen, dass die Attributwerte derselben Attribute sind Gleiches gilt, ohne den Hash-Code neu zu schreiben, sind die Hash-Werte unterschiedlich und werden als als zwei Objekte mit unterschiedlichem Inhalt in der Hash-Tabelle gespeichert, was dazu führt, dass zwei Elemente mit demselben Inhalt im Hash erscheinen Sobald die Methode „equals“ neu geschrieben ist, muss sie daher neu geschrieben werden. Schreiben Sie die Methode „hashCode“ und stellen Sie sicher, dass dieselben Objekte gleiche Werte haben. Drei Anwendungen

Hash-Werte werden hauptsächlich in Hash-Tabellen verwendet. Die unterste Ebene von HashMap und HashSet ist also eine Hash-Tabelle Wenn Sie ein Objekt in einer HashMap oder einem HashSet speichern möchten, muss die Methoden equal und hashCode in der Klasse überschreiben, damit dieselben Objekte gleiche Hashwerte haben.

Das obige ist der detaillierte Inhalt vonZusammenfassung der Verwendung von equal und hashCode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn