Die Klasse List

Die Klasse List ist eine "offizielle" Java-Klasse, die vom Bildungsministerium NRW entwickelt wurde und bisher in fast jedem Abiturjahrgang vorgekommen ist. Eine ausführliche Darstellung der Methoden der Klasse List findet sich auf der Seite "Der ADT List" von U. Helmich.

Hier nun eine Kurzübersicht über die Methoden der Klasse List. Im Gegensatz zur offiziellen Dokumentation, die ja überhaupt nicht auf eine mögliche Implementierung der Klasse List eingeht (es ist eben ein abstrakter Datentyp, bei dem die Implementierung nicht interessiert, nur die Operationen sind relevant), gehen wir hier mal von einer Implementation aus, bei der ein interner Zeiger aktuell auf das jeweils aktuelle Element der Liste verweist. Egal, ob die Liste statisch über einen Array von Objekten oder dynamisch über doppelt verkettete Knoten realisiert wird, ein solcher interner Zeiger auf das jeweils aktuelle Objekt ist immer notwendig.

  • List() - Der Konstruktor erzeugt eine leere Liste. Der Zeiger aktuell hat den Wert null.
     
  • boolean empty() - liefert true, wenn die Liste leer ist.
     
  • boolean hasAccess() - liefert true, wenn es in der Liste ein aktuelles Objekt gibt, wenn also aktuell nicht mehr den Wert null hat.
     
  • void next() - Der Zeiger aktuell wird auf das nächste Objekt in der Liste gesetzt. Falls es kein aktuelles Objekt gibt oder falls sich das aktuelle Objekt bereits am Ende der Liste befindet, passiert nichts. Wenn die Liste leer ist, passiert natürlich auch nichts.
     
  • void toFirst() - wenn die Liste nicht leer ist, wird aktuell auf das erste Objekt der Liste gesetzt.
     
  • void toLast() - wenn die Liste nicht leer ist, wird aktuell auf das letzte Objekt der Liste gesetzt.
     
  • ContentType getContent() - der Inhalt des aktuellen Objektes (falls es ein solches gibt) wird zurückgegeben. Andernfalls wird der Wert null zurückgeliefert.
     
  • void setContent(ContentType pContent) - der Inhalt des aktuellen Objektes (falls es ein solches gibt) wird durch pContent überschrieben. Andernfalls passiert nichts.
     
  • void append(ContentType pContent) - das Objekt pContent wird an das Ende der Liste angehängt. Falls die Liste leer ist, wir pContent zum ersten und einzigen Objekt der Liste. Der Zeiger aktuell wird durch append() nicht verändert.
     
  • void insert(ContentType pContent) - das neue Objekt pContent wird vor dem aktuellen Objekt (falls es so eins gibt) in die Liste eingefügt. Der aktuell-Zeiger wird nicht verändert. Bei einer leeren Liste wird pContent zum einzigen Element der Liste, aber aktuell hat weiterhin den Wert null.
     
  • void concat(List<ContentType> pList) - die Liste pList wird an das Ende der vorhandenen Liste angehängt. Der aktuell-Zeiger wird nicht verändert. Jetzt aufpassen: Falls es sich bei der aktuellen Liste und pList um die gleiche Liste handelt, wird pList nicht an die Liste angehängt. Eine Verdopplung der aktuellen Liste ist also auf diese Weise nicht möglich.
     
  • void remove() - Das Objekt, auf das aktuell zeigt, wird gelöscht, und der aktuell-Zeiger verweist dann auf das nächste Objekt. Zeigt aktuell auf das letzte Element der Liste, so wird dieses ebenfalls entfernt, und aktuell hat dann den Wert null. Wenn die Liste leer ist oder es kein aktuelles Objekt gibt, passiert nichts.

Abituraufgaben

Die Klasse List ist bisher fast in jedem Jahr in einer Abituraufgabe vorgekommen. Hier eine Übersicht der Aufgaben, in denen die Klasse List eine wichtige Rolle spielte.

2022-HT 1 - Sitzplan-Reservierung in der Turing-Schule.

2022-HT 2 - Verwaltung von Musikstücken.

2021-HT 1 - Verwaltung von Wetterstationen. 

2021-HT 4 - An sich eine Aufgaben zum Thema "formale Sprachen". Aber die Kandidaten sollen hier eine Java-Methode implementieren, die eine Liste gültiger Eisenbahn-Konstruktionen zurückliefert. Dazu wird die Klasse List eingesetzt.

 

Weiterführende Links

Statische Implementation einer Liste (mit Hilfe eines Arrays) auf u-helmich.de

Dynamische Implementation einer Liste (mit Hilfe von verketteten Knoten) auf u-helmich.de

Offizielle dynamische Implementation der Klasse List auf u-helmich.de