Java – Sammlung und Kartensammlung

Überblick über Java-Sammlungen

Bildbeschreibung hier einfügen

Eine Sammlung kann als Container zum Speichern von Objektinformationen angesehen werden. Alle Sammlungsklassen befinden sich im java.util-Paket, aber die Sammlungsklassen, die Multithreading unterstützen, befinden sich im java.util.concurrent-Paket.

Die Collection-Klasse von Java wird hauptsächlich von zwei Root-Schnittstellen abgeleitet, nämlich Collection und Map.

Collection-Klassen in Java können in zwei Kategorien unterteilt werden: Die eine implementiert das Collection-Interface , die andere implementiert das Map-Interface

Collection ist eine grundlegende Sammlungsschnittstelle, die eine Reihe von Sammlungselementen (Element) aufnehmen kann.

Map erbt die Collection-Schnittstelle nicht und befindet sich in einer parallelen Beziehung zu Collection. Map stellt eine Zuordnung von Schlüssel zu Wert bereit. Eine Zuordnung kann nicht denselben Schlüssel enthalten, und jeder Schlüssel kann nur einem Wert zugeordnet werden.

1. Sammlung

1. Unterschnittstellen und Implementierungsklassen der Collection-Schnittstelle

Die Unterschnittstellen der Collection - Schnittstelle umfassen: Set- Schnittstelle und List- Schnittstelle

Die Implementierungsklassen der Set-Schnittstelle umfassen hauptsächlich: HashSet , TreeSet , LinkedHashSet , etc.

Die Implementierungsklassen der List-Schnittstelle umfassen hauptsächlich: ArrayList , LinkedList , Stack und Vector , etc.

Die Liste stellt eine geordnete Sammlung dar. Jedes Element in der Liste hat einen Index. Mit dieser Schnittstelle kann die Einfügeposition jedes Elements genau gesteuert werden. Benutzer können auch den Index verwenden, um auf die Elemente in der Liste zuzugreifen, die dem Array von Java ähnelt.

Die Eigenschaft der Set-Schnittstelle besteht darin, dass sie keine doppelten Elemente enthalten kann. Für zwei beliebige Elemente element1 und element2 in Set ist elementl.equals(element2) = false. Außerdem hat Set höchstens ein Nullelement. Diese Schnittstelle ahmt das mathematische Konzept von Mengen nach. 

Die unterste Schicht von ArrayList ist ein Array

Die unterste Ebene von LinkedList ist eine doppelt verknüpfte Liste

Die unterste Schicht von LinkedHashSet ist LinkedHashMap

Die unterste Schicht von HashSet ist HashMap

Die unterste Ebene von TreeSet ist TreeMap

Ob die Speicherelemente bestellt sind Ob das Speicherelement wiederholbar ist
Liste (Liste) ordentlich wiederholbar
Warteschlange ordentlich wiederholbar
einstellen (einstellen) außer Betrieb nicht wiederholbar

Die Sammlung ist eine einspaltige Sammlung : Jedes Element ist ein separates Individuum

Die folgende Abbildung ist aus dem Machtknoten zitiert - Mr. Du

 1. Listensammlung

(1)ArrayList

Die zugrunde liegende Datenstruktur ist ein Array;

Schnelle Abfrage, langsames Hinzufügen und Löschen

Thread unsicher, hohe Effizienz.

(2)Verknüpfte Liste

Die zugrunde liegende Datenstruktur ist eine verkettete Liste

Die Abfrage ist langsam und das Hinzufügen und Löschen geht schnell.

Thread unsicher, hohe Effizienz.

(3) Vektor

Die zugrunde liegende Datenstruktur ist ein Array,

Schnelle Abfrage, langsames Hinzufügen und Löschen.

Fadensicher, geringer Wirkungsgrad.

(4) Stapeln

Es ist die Implementierungsklasse von Vector, die einen Last-in-First-out-Stack implementiert.

Stack bietet fünf zusätzliche Methoden, mit denen Vector als Stack verwendet werden kann. Die Push- und Pop-Methode sowie die Peek-Methode holen sich die Elemente des Stacks, die Empty-Methode testet, ob der Stack leer ist, und die Search-Methode prüft die Position eines Elements im Stack. Ein Stack ist ein leerer Stack, direkt nachdem er erstellt wurde.

2. Warteschlangensammlung

Eine Warteschlange ist eine spezielle lineare Tabelle, die nur Löschungen am vorderen Ende der Tabelle und Einfügungen am hinteren Ende der Tabelle zulässt.

Die Deque-Klasse ist die Implementierungsklasse von Queue. Die LinkedList-Klasse implementiert sowohl die List-Schnittstelle als auch die Deque-Schnittstelle (implementiert auch die Queue-Schnittstelle). Die Queue-Schnittstelle schränkt den Zugriff auf LinkedList-Methoden ein, das heißt, wenn der Parametertyp in der Methode Queue ist, kann sie nur auf die von der Queue-Schnittstelle definierten Methoden zugreifen, aber nicht direkt auf die Nicht-Queue-Methoden von LinkedList. damit nur die passende Methode verwendet werden kann.

3. Sammlung einstellen

(1) HashSet-Klasse

Die zugrunde liegende Datenstruktur ist eine Hash-Tabelle.

Die Zugriffs- und Suchleistung ist gut.

Der Wert des Sammlungselements kann null sein

(2) LinkedHashSet

Es ist eine Unterklasse von HashSet und hat die Eigenschaften von HashSet.

Die zugrunde liegende Datenstruktur ist eine verkettete Liste und eine Hash-Tabelle.Die verkettete Liste behält die Reihenfolge der Elemente bei, und die Reihenfolgeder Elemente stimmt mit der Reihenfolge überein, in der sie hinzugefügt wurden. Die Eindeutigkeit der Elemente wird durch die Hash-Tabelle garantiert.

(3)TreeSet

Die zugrunde liegende Datenstruktur ist ein binärer Baum, der die Implementierungsklasse der SortedSet-Schnittstelle darstellt, die sicherstellen kann, dass sich die Elemente in einem sortierten Zustand befinden.

TreeSet unterstützt zwei Arten der Elementsortierung: natürliche Sortierung und benutzerdefinierte Objektsortierung.

2. Karte

Die Implementierungsklassen der Map-Schnittstelle umfassen hauptsächlich: HashMap, TreeMap , Hashtable , ConcurrentHashMap und Properties usw.

Die Map-Schnittstelle verwendet die Schlüssel-Wert-Paar-Speichermethode Map<k,v>, um Daten mit einer Zuordnungsbeziehung zu speichern. Daher speichert die Map-Sammlung zwei

Gruppenwert, eine Gruppe von Werten wird verwendet, um den Schlüssel in der Map zu speichern, und eine andere Gruppe von Werten wird verwendet, um den Wert in der Map zu speichern, Schlüssel und Wert können sein

Es ist jede Art von Daten, der Schlüsselwert erlaubt keine Duplizierung und kann null sein. Wenn beim Hinzufügen von Schlüssel-Wert-Paaren bereits Duplikate in der Map vorhanden sind

drücken, überschreibt der neu hinzugefügte Wert den ursprünglichen entsprechenden Wert

Das zugrunde liegende Prinzip von HashMap ist das gleiche wie das von HashTable: Wenn die Hash-Kollision an derselben Position größer als 8 ist, wird die verknüpfte Liste nach der Version Java 8 zu einem rot-schwarzen Baum

Die unterste Schicht von HashTable ist eine Hash-Tabelle, die aus einer Kettenadressmethode besteht (d. h. Array + verkettete Liste mit einem Element).

Die untere Ebene von LinkedHashMap wird von HashMap modifiziert, das eine doppelt verknüpfte Liste enthält, die die Einfügungsreihenfolge beibehält

Die unterste Schicht von TreeMap ist ein rot-schwarzer Baum

Map ist eine zweispaltige Sammlung : Jedes Element ist ein Datenpaar, und das Datenpaar wird als Ganzes behandelt, um zu funktionieren

Die folgende Abbildung ist aus dem Machtknoten zitiert - Mr. Du

1, HashTable, HashMap

HashMap und HashTable sind zwei typische Implementierungen der Map-Schnittstelle, und die Beziehung zwischen ihnen ist völlig ähnlich wie ArrayList und Vertor. HashTable ist eine alte Map-Implementierungsklasse, deren Methoden umständlich sind und derzeit im Grunde nicht verwendet werden.

HashMap-Thread ist nicht sicher, HashTable-Thread sicher.

HashMap ist normalerweise schneller als HashTable

Der Schlüssel und der Wert von HashMap können Nullwerte sein. HashTable erlaubt keine Verwendung von Null-Werten als Schlüssel und Wert. Wenn Null in HashTable eingefügt wird, tritt eine Nullzeiger-Ausnahme auf.

2. LinkedHashMap-Klasse

LinkedHashMap verwendet eine doppelt verknüpfte Liste, um die Reihenfolge der Schlüssel-Wert-Paare beizubehalten (tatsächlich muss nur die Reihenfolge der Schlüssel berücksichtigt werden). Reihenfolge, sodass die Leistung geringer ist als die von HashMap, aber der iterative Zugriff auf die Elemente in den Map All-Elementen hat eine bessere Leistung.

3. Eigenschaftsklasse

Die Properties-Klasse ist eine Unterklasse der Hashtable-Klasse, die einer Map entspricht, deren Schlüssel und Wert beide String-Typen sind, und hauptsächlich zum Lesen von Konfigurationsdateien verwendet wird.

4. TreeMap-Klasse

TreeMap ist die Implementierungsklasse von SortedMap, einer binären Baumdatenstruktur, und jedes Schlüssel-Wert-Paar wird als Knoten des binären Baums verwendet. Wenn TreeMap Schlüssel-Wert-Paare speichert, muss es die Knoten nach dem Schlüssel sortieren. TreeMap hat auch zwei Sortiermethoden:

Natürliche Sortierung: Alle Schlüssel der TreeMap müssen die Comparable-Schnittstelle implementieren, und alle Schlüssel sollten Objekte derselben Klasse sein, sonst wird eine ClassCastException geworfen.

Benutzerdefiniertes Objekt Benutzerdefinierte Sortierung: Beim Erstellen einer TreeMap wird ein Comparator-Objekt übergeben, das für die Sortierung aller Schlüssel in der TreeMap verantwortlich ist.

Guess you like

Origin blog.csdn.net/MinggeQingchun/article/details/121224068