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
Collectionsondern 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
Collectionab einem gegebenen Index in eineListeingefügt werden? - Wo ist spezfiziert welche Konstruktoren
Collectionsanbieten und warum stehen sie nicht im Interface?