Objektsammlungen (ArrayList)

Java bringt zahlreiche Bibliotheksklassen mit, die zwar streng genommen nicht Teil der Sprache sind, aber so eng mit dem Sprachkern verbunden sind, dass diese Genze teilweise verschwimmt.

In diesem Abschnitt wollen wir uns die Bibliotheksklasse ArrayList() anschauen, die uns in vielen Aspekten an unsere zuvor selbst implementierte verkettete Liste erinnern wird.

Die Klasse ArrayList() stellt eine einfache Art der Objektsammlung dar: Eine unsortierte, aber geordnete Liste flexibler Größe1) Das erinnert sehr an die verkette Liste, nicht wahr…

Kapitel 4 im Buch, S. 131-181. Den für die Übungen dieses Kapitels nötigen Beispielcode findest du hier:

Musiksammlung v1

Musiksammlung v2

Musiksammlung v3

Musiksammlung v4

Musiksammlung v5

Zentrale Konzepte

Sammlung: Sammlungsobjekte sind Objekte, die eine beliebige Anzahl anderer Objekte enthalten können.

Schleife: Eine Schliefe wird verwendet, um einen Block von Anweisungen wiederholt auszuführen.

Iterator: Ein Iterator ist ein Objekt, mit dem über alle Elemente einer Sammlung iteriert werden kann.

null: null hat die Bedeutung „kein Objekt“. Eine Objektvariable mit dem Wert null verweist nicht auf ein konkretes Objekt.

Aufgaben zur Musiksammlung-v1

Untersuche das Projekt Musiksammlung-v1: https://codeberg.org/qg-info-unterricht/jlmb-musiksammlung-v1

(A1)

Öffne das Projekt und erzeuge ein Objekt der Klasse Musiksammlung.

Füge einige Dateinamen ein.

Was macht die Methode gibAnzahlDateien?

Wie ist die Methode dateiAusgeben aufzurufen? Welche Funktion hat der Parameter, der zu übergeben ist? Welche Werte darf er annehmen?

(A2)

Erzeuge ein neues Objekt der KLasse Musiksammlung und rufe dann sofort die Methode entferneDatei(0) auf. Erhältst du eine Fehlermeldung? Würdest du erwarten, dass ein Fehler auftritt?

(A3)

Erzeuge ein neues Musiksammlungsobjekt, füge zwei Titel ein und betrachte den Zustand deiner Sammlung, indem du mit der Methode dateiAusgeben() für die verschiedenen Indizes alle gespeicherten Titel betrachtest. Lösche den Titel mit dem Index 0 - was zeigt dateiAusgeben(0) jetzt an? Was kannst du daraus folgern?

Inwiefern verhält sich die ArrayList-Klasse anders, als unsere selbstgeschriebene verkettete Liste?

Die for-each Schleife

Um die Elemente einer ArrayL-List bequem sequenziell verarbeiten zu können, bietet Java die for-each-Schleife:

for (Elementtyp element: sammlung) { }

2) ArrayList ist eine Unterklasse von Collection, also eine Sammlung

Für unsere Musiksammlung könnte das so aussehen:

for (String dateiname: dateien) { // tu etwas mit dateiname }

(A4)

Implementiere eine Methode gibAlleDateienAus() mit Hilfe der for-each Schleife.

Implementiere eine Methode gibAlleDateienAusF() mit Hilfe einer for-Schleife.

Implementiere eine Methode gibAlleDateienAusW() mit Hilfe einer while-Schleife.

Material

[n/a: Keine Treffer]