Add collections

This commit is contained in:
Henri Burau 2020-05-12 15:45:21 +02:00
parent f9f23466ff
commit 3213484aac
1 changed files with 57 additions and 1 deletions

View File

@ -7,4 +7,60 @@ footer: Henri Burau und Eva Meinen
--> -->
# Collections # Collections
Abstrakte Datentypen. Beh 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)` oder `boolean offer(E element)`
* Elemente entnehmen mit `E remove()` oder `E poll()`
* Das oberste Element zurückgeben ohne es zu entnehmen `E element()` oder `E 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 eine `List` eingefügt werden?
* Wo ist spezfiziert welche Konstruktoren `Collections`anbieten und warum stehen sie nicht im Interface?