Studiennotizen zum Java Collection Framework
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: Vector verfügt außerdem über eine Unterklasse namens Stack, die zur Simulation der Datenstruktur eines Stapels verwendet wird. Da es sich um eine 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. FrameworkCollections ist eine Werkzeugklasse im Collection-Framework, die eine große Anzahl bereitstellt Eine Reihe von Methoden werden zum Sortieren von Sammlungselementen, zum 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.
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.
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.
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

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

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

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

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.

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

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

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.

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
