Die java.util.Set-Schnittstelle ist dieselbe wie die java.util.List-Schnittstelle. Sie erbt im Grunde auch von der Collection-Schnittstelle. Sie erweitert die Collection nicht Schnittstelle, ist aber fortgeschrittener als die Collection-Schnittstelle. Im Gegensatz zur List-Schnittstelle sind die Elemente in der Set-Schnittstelle ungeordnet und es werden bestimmte Regeln verwendet, um sicherzustellen, dass die gespeicherten Elemente nicht wiederholt werden.
Set-Sammlung hat viele Unterklassen, hier stellen wir zwei davon vor: java.util.HashSet und java.util.LinkedHashSet.
Funktionen: Es gibt bestimmte Regeln, um sicherzustellen, dass die gespeicherten Elemente nicht wiederholt werden. Die Elemente in der Set-Schnittstelle sind ungeordnet
①Die Elemente werden nicht wiederholt
②Elemente Ungeordnet (bezieht sich auf ungeordneten Zugriff)
Hash-Tabelle: Solange ein benutzerdefiniertes Objekt in der Hash-Tabelle gespeichert ist, muss die Klasse, zu der das benutzerdefinierte Objekt gehört, die Methode hashCode&equals überschreiben
⑴HashSet-Sammlung
Die unterste Ebene ist das zugrunde liegende neue HashMap-Objekt, das durch HashMap implementiert wird. Es wird nur der Schlüssel verwendet und der Wertwert wird nicht verwendet, um auf die einheitliche Adresse new Object() zu verweisen 🎜>
API-Einführung:
java.util.HashSet ist eine Implementierungsklasse der Set-Schnittstelle. Die darin gespeicherten Elemente sind nicht wiederholbar und die Elemente sind ungeordnet (das Das heißt, die Zugriffsreihenfolge ist inkonsistent. Die zugrunde liegende Implementierung von java.util.HashSet ist eigentlich eine java.util.HashMap-Unterstützung. HashSet bestimmt den Speicherort von Elementen in der Sammlung basierend auf dem Hash-Wert des Objekts und bietet so eine gute Zugriffs- und Suchleistung. Die Möglichkeit, die Einzigartigkeit von Elementen sicherzustellen, basiert auf den Methoden hashCode und equal.Eigenschaften:
①Keine wiederholten Elemente②Inkonsistente Zugriffsreihenfolge③Gute Zugriffs- und Suchleistung④Die Art und Weise der Eindeutigkeit von Elementen hängt ab von: HashCode und der Methode equalDie Struktur (Hash-Tabelle) der HashSet-Sammlung zum Speichern von Daten:
in JDK1 Vor .8, die Die unterste Ebene der Hash-Tabelle wurde mithilfe eines Arrays + einer verknüpften Liste implementiert. Selbst wenn eine verknüpfte Liste zur Behandlung von Konflikten verwendet wurde, wurden verknüpfte Listen mit demselben Hash-Wert alle in einer verknüpften Liste gespeichert. Wenn sich jedoch viele Elemente in einem Bucket befinden, , d. h. wenn viele Elemente mit gleichen Hashwerten vorhanden sind, ist die Effizienz der sequentiellen Suche nach Schlüsselwerten gering. In JDK1.8 wird die Hash-Tabellenspeicherung durch Array + verknüpfte Liste + rot-schwarzer Baum implementiert Wenn die Länge der verknüpften Liste den Schwellenwert (8) überschreitet, wird die verknüpfte Liste erstellt wird in einen rot-schwarzen Baum umgewandelt. Dadurch wird die Suchzeit erheblich verkürzt. Kurz gesagt, die Einführung von Rot-Schwarz-Bäumen in JDK1.8 hat die Leistung von HashMap erheblich optimiert. Um sicherzustellen, dass die Einzigartigkeit der HashSet-Sammlungselemente tatsächlich auf dem basiert des Objekts wird durch die Methoden hashCode und equal entschieden. Wenn wir ein benutzerdefiniertes Objekt in der Sammlung speichern, , müssen wir zur Gewährleistung seiner Einzigartigkeit die Methoden hashCode und equal überschreiben, um eine Vergleichsmethode zu erstellen, die zum aktuellen Objekt gehört. Zusammenfassung: Vor 1.8 wurde es über die unterste Ebene der Hash-Tabelle mithilfe von Array + verknüpfter Liste implementiert. In 1.8 wurde es über die Hash-Tabellenspeicherung mithilfe von Array + verknüpfter Liste + Rot implementiert -schwarzer Baum (die Länge der verknüpften Liste überschreitet den Schwellenwert (8), wandelt die verknüpfte Liste in einen rot-schwarzen Baum um, was die Suchzeit erheblich verkürzt.) Um sicherzustellen, dass die Elemente eindeutig sind, müssen die Methoden hashCode und equal vorhanden sein neu geschrieben, um eine Vergleichsmethode zu erstellen, die zum aktuellen Objekt gehört HashSet speichert benutzerdefinierte Typelemente (Wichtige Punkte): Beim Speichern benutzerdefinierter Typelemente in HashSet müssen Sie die Methoden hashCode und equal neu schreiben im Objekt. Etablieren Sie Ihre eigene Vergleichsmethode, um sicherzustellen, dass die Objekte in der HashSet-Sammlung eindeutig sind⑵LinkedHashSet
HashSet stellt sicher, dass die Elemente sind eindeutig, aber die Elemente werden in keiner Reihenfolge gespeichert, daher müssen wir für Ordnung sorgen. Es gibt eine unter HashSet. Unterklasse java.util.LinkedHashSet, eine Datenspeicherstruktur, die eine Kombination aus verknüpfter Liste und ist Hash-Tabelle.Das obige ist der detaillierte Inhalt vonWas bedeutet Java-Set?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!