Programmieren II (WF2)

Aufgabenblatt 6: Collections

Aufgabe 6.1: Eine doppelt verkettete Liste

Implementieren Sie eine eigene doppelt verkettete Liste MyDoubleLinkedList. Beginnen Sie dazu mit der Vorlage MyDoubleLinkedListEmpty als Grundgerüst der Implementierung.

Gehen Sie wie folgt vor:

  1. Machen Sie sich mit der Struktur der Klasse, der enthaltenen lokalen Klasse Node<T> und den schon implementierten Methoden vertraut.
  2. Implementieren Sie alle mit TODO markierten Methoden.
    • Am trickreichsten werden die Methoden add(int pos, T element) und removeNode(Node<T> n) sein. Vollziehen Sie am besten auf Papier nach, welche Referenzen zwischen Objekten vom Typ Node wie verändert werden müssen.
    • Versuchen Sie Copy&Paste zu vermeiden, sondern rufen Sie wenn möglich andere Methoden Ihrer Klasse auf.
  3. Testen Sie Ihre Implementierung schon während der Entwicklung mit einer eigenen Testklasse und mit der Klasse MyDoubleLinkedListTest.

Aufgabe 6.2: Iterator für MyLinkedList

Erweitern Sie Ihre Implementierung einer doppelt verketteten Liste MyDoubleLinkedList<T> so, dass sie die Schnittstelle Iterable<T> implementiert.

Diese Schnittstelle verlangt, dass Sie die Methode Iterator<T> iterator() implementieren. Sie müssen also Ihre Liste um einen passenden Iterator erweitern, der von der Methode erzeugt und zurückgegeben werden kann.

Testen Sie Ihre Implementierung mit einer Testklasse. Probieren Sie auch aus, ob Sie die Elemente Ihrer Liste mir foreach (for (T element : liste) { ...}) durchlaufen können.

Hinweise:

Aufgabe 6.3: Adresskartei mit Collections

Ersetzen Sie in Ihrer Implementierung der Adresskartei alle Arrays durch geeignete Collections (Listen, Sets oder Maps).

Vereinfacht sich Ihr Programm dadurch? Verbessert es sich?