Inhaltsverzeichnis
abgeleitet sind. Set-Sammlungen dürfen nicht dieselben Elemente enthalten, und es ist nicht offensichtlich Reihenfolge zwischen Objekten in der Sammlung
HashSet, LinkedHashSet und TreeSet sind die Hauptimplementierungsklassen von Set
TreeSet
Vergleich der Leistung verschiedener Sets
Heim Java javaLernprogramm Studiennotizen zum Java Collection Framework

Studiennotizen zum Java Collection Framework

Apr 04, 2017 am 10:36 AM

Die Java-Sammlungsklasse kann zum Speichern mehrerer Objekte unterschiedlicher Anzahl verwendet werden und kann allgemeine Datenstrukturen wie Stapel, Warteschlangen usw. implementieren. Im Gegensatz zu Arrays ist die Länge von Arrays unveränderlich. Array-Elemente können Basistypen und Objekttypen speichern, während Sammlungen nur Objekte speichern können (im Wesentlichen Objekt-ReferenzenVariablen), Java-Sets können ungefähr sein unterteilt in Set, List und Map, wobei Set einen ungeordneten, nicht wiederholbaren Satz darstellt und List einen geordneten, wiederholbaren Satz darstellt Bei einer Sammlung mit einer Zuordnungsbeziehung ist der Schlüssel in der Zuordnung eindeutig und der Wert ist wiederholbar. Darunter sind Set, List und die nach Java5 neu hinzugefügte Warteschlangenwarteschlange Unterschnittstellen, die von CollectionInterface

abgeleitet sind. Set-Sammlungen dürfen nicht dieselben Elemente enthalten, und es ist nicht offensichtlich Reihenfolge zwischen Objekten in der Sammlung

HashSet, LinkedHashSet und TreeSet sind die Hauptimplementierungsklassen von Set

HashSet kann die Reihenfolge der Elemente nicht garantieren, HashSet ist nicht synchronisiert und HashSet-Set-Elemente sind zulässig sein nullWenn ein Objekt in einem HashSet gespeichert wird, ruft das HashSet die hashCode-Methode des Objekts auf, um den hashCode-Wert des Objekts abzurufen und den Speicherort des Objekts im HashSet basierend zu bestimmen auf dem hashCode-Wert. In HashSet wird beurteilt, ob zwei Objekte gleich sind, indem die Rückgabewerte der Methoden equal() und hashCode() verglichen werden.
LinkedHashSet ist eine Unterklasse von HashSet, verwendet jedoch auch eine verknüpfte Liste zur Verwaltung Reihenfolge der Elemente, sodass die Elemente scheinbar in der Reihenfolge des Einfügens gespeichert werden. Da die Einfügereihenfolge der Elemente beibehalten werden muss, ist die Leistung etwas geringer als die von HashSet, da es sich immer noch um ein HashSet handelt kann nicht wiederholt werden

TreeSet

TreeSet ist die Implementierungsklasse der SortedSet-Schnittstelle. Ebenso kann TreeSet sicherstellen, dass sich die Sammlungselemente im sortierten -Zustand befinden Die Methode comparTo (Object obj) der Sammlungselemente vergleicht die Größenbeziehung zwischen den Elementen und legt dann die Sammlungselemente fest. Die Elemente werden in aufsteigender Reihenfolge angeordnet, dh in natürlicher Sortierung. TreeSet kann auch eine benutzerdefinierte Sortierung über die Comparator-Schnittstelle implementieren. Beim Erstellen eines TreeSet-Sammlungsobjekts wird ein Comparator-Objekt bereitgestellt, das der TreeSet-Sammlung zugeordnet wird, und das Comparator-Objekt ist für die Sortierlogik der Sammlungselemente verantwortlich.

Vergleich der Leistung verschiedener Sets

Die Leistung von HashSet ist immer besser als die von TreeSet, da TreeSet zusätzliche Algorithmen benötigt, um die Reihenfolge der Set-Elemente beizubehalten. TreeSet sollte nur verwendet werden, wenn ein Set dies erfordert Andernfalls sollte HashSet verwendet werden. Darüber hinaus ist LinkedHashSet eine Unterklasse von HashSet, die normalen Einfüge- und Löschvorgängen entspricht. Die Leistung von LinkedHashSet ist jedoch etwas langsamer als die von HashSet Aufgrund der verknüpften Liste ist es beim Durchlaufen von LinkedHashSet schneller. Allerdings ist keine der drei Implementierungsklassen von set threadsicher. Sie können normalerweise die synchronizedSortedSet-Methode der Collections-Toolklasse verwenden. Diese Operation ist am besten Wird zum Zeitpunkt der Erstellung ausgeführt. Zum Beispiel: SortedSet s = Collections.synchronizedSortedSet(<a href="http://www.php.cn/wiki/165.html" target="_blank">new</a> TreeSet(.. .));Die

List-Sammlung stellt eine geordnete und wiederholbare Sammlung dar. Die Elemente in der Sammlung haben ihre entsprechenden

ArrayList und Vector sind Listen. Es gibt zwei typische Implementierungen von LinkedList
, bei denen die Klassen ArrayList und Vector ein dynamisches Object[]-Array kapseln, das eine Neuzuweisung ermöglicht, wenn die Anzahl der Elemente hinzugefügt wird. Wenn die Array-Länge überschritten wird, wird die anfängliche Die Länge wird automatisch erhöht. Der wesentliche Unterschied zwischen ArrayList und Vector besteht darin, dass ArrayList nicht threadsicher ist, während Vector threadsicher ist und kein Programm benötigt, um die Synchronisierung der Sammlung sicherzustellen. Da Vector threadsicher ist, ist die Farbleistung von Vector geringer als die von ArrayList. Auch wenn die Thread-Sicherheit gewährleistet sein muss, wird die Verwendung von Vector im Allgemeinen nicht empfohlen. Verwenden Sie stattdessen die entsprechenden Methoden der Collections-Tool-Klasse, um die ArrayList in eine thread-sichere Klasse einzubinden.

Vector verfügt außerdem über eine Unterklasse namens Stack, die zur Simulation der Datenstruktur eines Stapels verwendet wird. Da es sich um eine
Vererbungsbeziehung handelt, ist Stack auch threadsicher Die Leistung ist relativ schlecht. Wenn Sie eine Datenstruktur wie einen Stapel verwenden müssen, können Sie die Verwendung von LinkedList in Betracht ziehen.LinkedList ist auch eine Implementierungsklasse von List Die List-Implementierung ist für den sequentiellen Zugriff auf Elemente in der Sammlung optimiert, insbesondere für das Einfügen von Elementen. Da sie sowohl die List-Schnittstelle als auch die Deque-Schnittstelle implementiert, kann sie als solche verwendet werden Stapel. Die Queue-Sammlung wird verwendet, um die Datenstruktur einer Warteschlange zu simulieren, First In, Last Out. Deque ist eine Unterschnittstelle von Queue, die eine doppelseitige Warteschlange darstellt und die Manipulation von Elementen der Warteschlange von beiden Enden aus ermöglicht.

Der Unterschied zwischen LinkedList und ArrayList
Da ArrayList die Elemente in der Sammlung intern in Form eines Arrays speichert, weist es eine bessere Leistung auf, wenn zufällig auf Sammlungselemente zugegriffen wird, während LinkedList in der Form vorliegt einer verknüpften Liste wird zum Speichern der Elemente der Sammlung verwendet, daher ist die Leistung beim Direktzugriff schlecht, aber die Leistung beim Einfügen und Löschen von Elementen ist sehr gut.

Map wird zum Speichern von Daten mit Mapping-Beziehungen verwendet. Sowohl Schlüssel als auch Wert können beliebige Referenzdatentypen sein, aber der Schlüsselwert von Map ist eindeutig und kann nicht wiederholt werden.

HashMap und Hashtable sind es Maps Zwei Implementierungsklassen
Hashtable ist eine threadsichere Map-Implementierungsklasse, HashMap ist jedoch nicht threadsicher, sodass die Leistung von HashMap etwas besser ist.

Darüber hinaus erlaubt Hashtable nicht die Verwendung von Null als Schlüssel und Wert. Der Versuch, Null in Hashtable einzufügen, führt zu einer Nullzeigerausnahme, HashMap kann jedoch Null als Schlüssel und Wert verwenden Es gibt nur einen Schlüssel, der null ist. Es können jedoch mehrere Werte vorhanden sein, die null sind.
Das Kriterium zur Beurteilung der Gleichheit zweier Schlüssel in HashMap und Hashtable besteht darin, dass die Rückgabewerte der beiden Schlüssel durch die Methoden equal() und hashCode() gleich sind.
LinkedHashMap ist eine Unterklasse von HashMap. LinkedHashMap verwendet außerdem eine doppelt verknüpfte Liste, um die Reihenfolge der Schlüssel beizubehalten, dh die Iterationsreihenfolge stimmt mit der Einfügereihenfolge überein. Da die Einfügereihenfolge der Elemente beibehalten werden muss, ist die Gesamtleistung etwas geringer als bei HashMap.

TreeMap
Unter Map gibt es auch eine SortedMap-Schnittstelle. Wenn TreeMap Schlüssel-Wert-Paare speichert, müssen Knoten nach der TreeMap-Sortierung sortiert werden ist in natürliche Sortierung und benutzerdefinierte Sortierung unterteilt. Bei der geplanten Sortierung muss beim Erstellen einer TreeMap ein Comparator-Objekt übergeben werden, und dieses Objekt sortiert die Schlüssel in der TreeMap. Ähnlich wie TreeSet. TreeMap ist langsamer als HashMap und Hashtable, da die Reihenfolge beibehalten werden muss.

Der Unterschied zwischen Collection und Collections

Collection ist eine Schnittstelle von Javas Collection

FrameworkCollections ist eine Werkzeugklasse im Collection-Framework, die eine große Anzahl bereitstellt Eine Reihe von Methoden werden zum Sortieren von Sammlungselementen, zum
Abfragen , zum Ändern und für andere Vorgänge verwendet. Außerdem werden einige Methoden zum Festlegen von Sammlungsobjekten als unveränderlich und zur Erzielung einer Synchronisationssteuerung von Objektsammlungen bereitgestellt.

Das obige ist der detaillierte Inhalt vonStudiennotizen zum Java Collection Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Quadratwurzel in Java Quadratwurzel in Java Aug 30, 2024 pm 04:26 PM

Leitfaden zur Quadratwurzel in Java. Hier diskutieren wir anhand eines Beispiels und seiner Code-Implementierung, wie Quadratwurzel in Java funktioniert.

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Armstrong-Zahl in Java Armstrong-Zahl in Java Aug 30, 2024 pm 04:26 PM

Leitfaden zur Armstrong-Zahl in Java. Hier besprechen wir eine Einführung in die Armstrong-Zahl in Java zusammen mit einem Teil des Codes.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

See all articles