08.01 Das Collection-Framework
Das Collection-Framework umfasst mehrere Klassen und Interfaces um häufig benötigte Datenstrukturen darzustellen. Die Aufteilung erfolgt in drei Hauptgruppen – Lists, Sets und Maps. Diese Interfaces stellen die Schnittstellen, losgelöst von der eigentlichen Implementierung dar. Je nach Anwendungsfall muss also die richtige Schnittstelle gewählt werden.
Eine List
ist eine sortierte Auflistung von Objekten, die über einen int
-Wert indiziert werden. Praktisch eine Art dynamisches Array. Wenn Sie einer Liste Elemente hinzufügen, bleiben diese auch an der Stelle, an der Sie sie hinzugefügt haben. Fragen Sie also bspw. das Objekt an Stelle „zwei“ ab, dann wird sich fünf Minuten später an der selben Stelle noch immer das gleiche Objekt befinden – es sei denn, Sie haben etwas an der Datenstruktur geändert. Auch erlauben Listen grundsätzlich doppelte Einträge. Sie können hierdurch ein Objekt mehrmals an unterschiedlichen Stellen hinzufügen. Die ArrayList
, mit der Sie bereits gearbeitet haben, ist bspw. eine konkrete Implementierung einer Liste.
Im Gegensatz zu einer List
, darf in einem Set
kein Objekt doppelt hinzugefügt werden. Auch haben die Elemente in einem Set
keine feste Reihenfolge. Ein Set
repräsentiert dadurch Mengen im mathematischen Sinne. Eine konkrete Implementierung eines Sets
ist bspw. ein TreeSet
oder ein HashSet
.
Einen anderen Ansatz verfolgt die Map
. Sie weißt einem Schlüssel (Key) (vor Java 1.5 ein Objekt der Klasse Object
, seit Java 1.5 ein Objekt des übergebenen Generics) einen bestimmten Wert (Value) zu. So könnte z. B. ein bestimmter String mit einem bestimmten Dateinamen verknüpft werden. Der Schlüssel muss natürlich eindeutig sein, ein und derselbe Wert kann aber durchaus mehreren Schlüsseln zugeordnet werden. Die HashMap
ist bspw. eine konkrete Implementierung einer Map
.
In den nachfolgenden Kapiteln werden Sie mehr zu den einzelnen Schnittstellen, Subinterfaces und konkreten Implementierungen erfahren.