From 3213484aacebee66bf2c83843f0aee9e34c89f13 Mon Sep 17 00:00:00 2001 From: Henri Burau Date: Tue, 12 May 2020 15:45:21 +0200 Subject: [PATCH] Add collections --- collections.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/collections.md b/collections.md index ba7b59d..56e1184 100644 --- a/collections.md +++ b/collections.md @@ -7,4 +7,60 @@ footer: Henri Burau und Eva Meinen --> # 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: + +* ` 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?