2.4 KiB
Collections
Abstrakte Datentypen. Behälter für Daten mit verschiedenen Eigenschaften.
Die wichtigsten Intefaces sind Collection
, List
, Set
und Queue
.
Collection
Supertyp von List
, Set
und Queue
. Repräsentiert eine Gruppe von Objekten, Elemente genannt.
- Es gibt keine direkte Implementation von dem Interface
Collection
sondern nur von seinen Subtypen. - Collections können sortiert oder unsortiert sein.
- Collections können Duplikate zulassen oder verbieten.
Set
- Mengen sind unsortiert und lassen keine Duplikate zu.
Mengen ergänzen das Interface Collection
um keine Methoden. Der einzige Unterschied zwischen Collection
und Set
sind die vorgeschriebenen Implementationen von add
, equals
und hashCode
.
Häufig verwendete Implementationen von Set
sind: HashSet
und TreeSet
.
List
- Listen sind sortiert und lassen Duplikate zu.
Das Interface List
ergänzt 4 weitere Methoden zu dem Interface Collection
, welche einen indizierten Zugriff auf die Elemente zulassen. Der Index startet, wie bei Arrays, von 0. Die Methoden sind:
<E> get(int index)
int indexOf(Object o)
int lastIndexOf(Object o)
boolean remove(int index)
Folgende Implementationen von List
werden häufig verwendet: ArrayList
und LinkedList
.
Queue
- Queues sind sortiert und erlauben Duplikate.
Das Interface Queue
ist eine Collection
in der Elemente vor ihrer Bearbeitung abgespeichert werden können. Die meisten Queues operieren dabei nach den FIFO-Prinzip. Das Interface erlaubt 3 Operationen:
- Elemente hinzufügen mit
boolean add(E element)
oderboolean offer(E element)
- Elemente entnehmen mit
E remove()
oderE poll()
- Das oberste Element zurückgeben ohne es zu entnehmen
E element()
oderE peek()
Als Implementation wird häufig eine LinkedList
verwendet.
Aufgaben
- Wie verhält sich die Methode
boolean add(E element)
und in welchem Interface wird sie zuerst spezifiziert? - Mit welcher Methode können mehrere Elemente einer
Collection
ab einem gegebenen Index in eineList
eingefügt werden? - Wo ist spezfiziert welche Konstruktoren
Collections
anbieten und warum stehen sie nicht im Interface?