uio--WebPageMain-Module

JAVA-B2 Collections Collections Framework Diagramm Was sind Collections Vorteile

Collection Interfaces Core-Collection-Interfaces (Begriff, Ziele, Standard) Liste der Core Interfaces List Set Queue Dequeue SortedSet NavigableSet Map SortedMap NavigableMap Collections Zusammenfassung @!Beispiele+Links

Das Interface Collection Das Superinterface Diagramm Diagramm Collection-Standard-Methoden Zusammenfassung

Implementierungsklassen Implementierungsklassen Diagramm Array[T]> Lists ArrayList<E> LinkedList<E> CopyWriteOnList<E> Set<E> Implementations HashSet<E> TreeSet<E> EnumSet<E> CopyWriteOnArraySet<E> Queue<E> Implementations LinkedList<E> PriorityQueue<E> Deque<E> Implementations LinkedList<E> ArrayDeque<E> Map<E> Implementations HashMap<K,V> LinkedHashMap<K,V> TreeMap<K,V> WeakHashMap<K,V> IdentityHashMap<K,V> EnumMap<K,V> ConcurrentHashMap<K,V>** ConcurrentSkipList<K,V>** SortedSet<E> Implementations TreeSet<E> EnumSet<E> BlockingQueue<E> Implementations ArrayBlockingQueue<E> LinkedBlockingQueue<E> LinkedBlockingQueue<E> PriorityBlockingQueue<E> SynchronousQueue<E> DelayQueue<E> Legacy Types für Listen Vector Hashtable Stack Stack HashSet<E> HashSet<E> @!Descriptions @!Examples @!Index/Examples

Interfaces | Collection-Interfaces

Übersicht über alle Core-Collection-Interfaces

In der Einführung in Collection geben wir einen Einblick, was Collections sind, wie man mit Collections als Entwickler bessere Programme realisiert und für alle Beteiligten den Job etwas einfacher macht.

Wir geben einen Überblick über die zentralen Elemente welche in der Summe des Java Collection Framework bilden: Die Collection Interfaces, die Implementierungsklassen für Collections sowie auch die zugehörigen Algorithmen von Collections in Java.

Core-Interfaces

Interfaces | Core-Collection-Interfaces

Das Java Collection Framework bietet eine ganze Reihe von Interfaces. Für die meisten Zwecke ist aber ein kleiner Kern dieser Interfaces ausreichend, denn Interfaces bilden eine eine Vererbungshierarchie.

Basierend auf diesen Interfaces ist es möglich, Collections zu schaffen, welche das Verhalten mehrerer Interfaces berücksichtigen, ohne dass man sich Gedanken darüber machen muss, wie denn nun die eigentliche Implementierung erfolgte.

interface Set

Ein Set ist eine spezielle Art von Collection, ein SortedSet eine spezielle Art von Set und so weiter.

Beachte auch, dass die Hierarchie aus zwei separaten Bäumen besteht – eine Map ist keine echte Collection.

Core-Collection-Interfaces sind generisch

Alle Kern-Collection-Interfaces sind generisch. Zum Beispiel sieht die Deklaration des Collection-Interfaces so aus:

public interface Collection<E>

Diese Syntax für generische Typparameter wie <E> lässt erkennen, dass dieses Interfaces generisch ist, dh. bei einer Deklaration von Variablen oder dem Erzeugen einer Collection-Instanz muss der Typ der enthaltenen Objekte angegeben werden.

Dies ermöglicht dem Compiler, zur Kompilierzeit zu überprüfen, ob die eingefügten Objekte den korrekten Typ haben, wodurch Laufzeitfehler reduziert werden.


Mehr Informationen siehe generische Programmierung, generische Klassen, generische Typparameter

Verständnis des Frameworks erfordert Verständnis der Interfaces

Wenn man verstanden hat, wie diese Interfaces verwendet werden, hat man auch die Funktionsweise des Java Collection Frameworks vom Prinizp her verstanden. kennst du bereits das Wesentliche des Java Collections Frameworks.

Guidelines für Nutzung und Einsatzzwecke von Interfaces

Zu Beginn sollte man danach streben, die Guidelines für die effektive Nutzung von Interfaches zu berücksichtigen und die optionalen Einsatzbereiche bestimmter Interfaces verstehen.

Die Kenntnis von Interface-Bezeichnungen wie «Set» oder «List» ist schön und gut, aber jedes dieser Interfaces mit den hierdurch vorgegebenen Methoden hat einen gewissen Einsatzbereich in welchem Collections, welche diese Interfaces implementiert haben, überaus praktisch sein können, in anderen Fällen aber unpraktisch sind.


Hinweis: Manche Collections implementieren mehrere Interfaces und decken damit mehrere Einsatzbereiche ab.

Um ein Interface wirklich effektiv nutzen zu können, ist es dringend anzuraten, dass man sich die optionalen Einsatzmöglichkeiten anschaut und dann die typischen Programm-Idiome für das jeweilige Interface sichtet, lernt, übt und einsetzt.

Bereits das Sichten all dieser Interfaces und Idiome erfordert etwas Zeit und ist für manche Einsteiger durchaus komplex. In der Summe ist es aber immer sinnvoll, die bestehenden Interfaces und Implementierungsklassen zu verwenden.

Interfaces und UnsupportedOperationException

Um die Anzahl zumindest der Core-Collection-Interfaces auf eine noch überschaubare Anzahl reduzieren zu können, beschreiben die Interfaces nicht bestimmte Typen von Collections sondern deren Verhalten.

Es gibt also durchaus unveränderliche Collections, Collections mit festgelegter Größe und andere Collections. Falls eine nicht unterstützte Operation aufgerufen wird, wirft die Collection eine UnsupportedOperationException. Implementierungen müssen dokumentieren, welche optionalen Operationen sie unterstützen.

Im Code von Java-Anwendungen gibt es zwei wesentliche Arten von Collections: Die bestehenden vordefinierten Implementierungen des Java Collection Frameworks sowie eigene, Custom Collections.


Die vordefinierten Implementierungen des Java Collections Framework (wie ArrayList, HashSet, HashMap usw.) haben den großen Vorteil, dass diese in jeder Hinsicht geprüft und auch auf Performance optimiert wurden. Hinzukommt, dass diese alle durch die implementierten Interfaces geforderten Funktionalitäten tatsächlich auch unterstützen.


Man kann jederzeit eine eigene Collection erstellen, indem man eine Klasse programmiert, die bestimmte Interfaces implementiert. Diese Interfaces definieren das Verhalten der Collection. Dadurch gibt man an, welche Aktionen innerhalb des Programms möglich sind. F

Wird eine Methode aufgerufen, die nicht explizit von der Implementierung unterstützt wird, muss die Collection eine UnsupportedOperationException auslösen. Dies ist eine bewusste Entscheidung, um Entwicklern die Kontrolle über erlaubte Operationen zu geben.


Alle allgemeinen Implementierungen der Java-Plattform unterstützen sämtliche optionalen Operationen.

Interfaces | Liste der Core-Collection-Interfaces

Die nachfolgenden Core-Collection-Interfaces bilden die Grundlage der Vererbungshierarchie der übrigen Collection-Interfaces.

Des ist dringend anzuraten, dass man dieses Interfaces kennt und verstanden hat, bevor man sich auch nur ansatzweise darüber nachdenkt, eigene Collections zu schaffen. Das hat im Kern damit zu tun, dass die Begrifflichkeiten klar vorgeben, welche Collections doppelte Einträge haben dürfen und welche nicht.

Core-Interfaces

Kern-Collection-Interfaces: Collection, Set, List, Queue, Deque, Map, SortedSet, SortedMap

Collection

Die Wurzel der Collection-Hierarchie: Eine Klasse, welche das Collection Interface implementiert hat, respräsentiert einen Container mit dessen Hilfe eine Gruppe von Objekten, die wir als Elemente der Gruppe bezeichnen, verwalten können.

Das Collection-Interface ist die allgemeinste Form, die alle Sammlungen implementieren und wird verwendet, um Collections zu übergeben und zu manipulieren.

Wichtig: Einige Collections erlauben doppelte Elemente, andere nicht.

Wichtig: Einige sind geordnet, andere ungeordnet.


Java stellt keine direkte Implementierung dieses Interfaces bereit, sondern Implementierungen spezifischer Unterinterfaces wie Set und List.

Set

Das Set ist eine Collection.

Ein Set kann KEINE doppelten Elemente enthalten. .


Trick: Durch das Umlesen von Elementen einer Collection in eine Collection, welche das Set Interface implementiert hat, können und müssen also doppelte Einträge automatisch entfernt werden.

List

Eine List ist eine geordnete Collection. Man spricht auch oftmals von einer Sequenz von Elementen. Der Nutzer einer List kann genau steuern, wo sich ein Element in der Liste befindet und kann es über seinen Index abrufen.

List-Objekte können doppelte Elemente enthalten.

Die Position eines Elements in dieser Liste kann über einen Index bestimmt werden. Und man kann das entsprechende Element über diesen Index als Schlüssel auch adressieren.

Queue

Die Queue (dt. Schlange) ist eine Collection, die mehrere Elemente speichert, bevor sie verarbeitet werden.

Neben den grundlegenden Collection-Operationen bietet Queue zusätzliche Einfüge-, Extraktions- und Inspektionsfunktionen.

Queues ordnen Elemente normalerweise nach dem FIFO-Prinzip (First-In, First-Out): Das Element, welches als erstes der Queue hinzugefügt wurde, wird später auch als erstes wieder verwendet. Das bedeutet im Umkehrschluss, dass eine Queue mit


Ein Sonderfall sind PriorityQueue Container: Diese Collections können die Reihenfolge der zu verarbeitenden Elemente in der PriorityQueue basierend auf einem Comparator bestimmen, welcher beispielsweise nicht die Position als Zahl berücksichtigt sondern nach einem anderen Verfahren die Elemente sortiert und deren Reihenfolge prioritisiert.

Deque (LIFO und FIFO)

Das Deque Interfaces beschreibt Collections welche als erweiterte Form des Queue-Interfaces die Elemente sowohl nach dem FIFO-Prinzip als auch nach dem LIFO-Prinzip (Last-In, First-Out) speichern kann.

Ein Deque ermöglicht das Einfügen, Abrufen und Entfernen von Elementen an beiden Enden.

Ein Map ist Container als Objekt, welches Schlüssel auf Werte abbildet. Beispiel: B für Berlin, HH für Hamburg, WI für Wiesbaden.

Eine Map kann keine doppelten Schlüssel enthalten; jeder Schlüssel kann nur einem Wert zugeordnet werden.

Vom Map-Interface gibt es zwei sortierte Versionen: Das Set und die Map.


SortedSet – Ein Set, das seine Elemente in aufsteigender Reihenfolge speichert. Es bietet zusätzliche Funktionen zur Nutzung der Ordnung.

Auch ein SortedSet kann KEINE doppelten Elemente beinhalten.

Die Reihenfolge der Elemente bleibt erhalten, dh. wann man zuerst WI:Wiesbaden und dann B:Berlin eingibt, kann man zwar ggf. später noch nach WI oder vor B ein Element wie F:Frankfurt einführen, aber auch in diesem Fall findet sich WI weiterhin in der Reihenfolge vor B.


SortedMap – Eine Map, die ihre Schlüssel in aufsteigender Reihenfolge speichert. Dies entspricht dem SortedSet, jedoch für Schlüssel-Wert-Paare.

Ein SortedMap-Container wie bereits das Set keine doppelten Werte enthalten.

Die Reihenfolge Elemente in der Collection werden allerdings basierend auf einem Key als Schlüssel sortiert.

Übrigens: Eine Hierarchie dieser Interfaces lässt sich auch im Programmcode in einer IDE leicht daran erkennen, dass Interfaces selbst wiederum Interfaces implementieren oder auch von diesen erben können.

Alle Core-Collection-Interfaces in Java sind generisch.

UI ORGANIZED.

UIO3 Es ist einfacher als Du denkst.

Stelle noch heute Deine Anfrage.

uio--WebPageFooter-Module