***** Übungen: Java - ArrayList ***** Java_30-ArrayList-1a: Lieblingsfächer, ArrayList Erstellen Sie eine Klasse "Fachverwaltung" wie in diesem Klassendiagramm: *LINK /16java/java31-arrayList-UE1a-klassendiagramm.png LINK* Konstruktor der Klasse: - Weisen Sie der ArrayList zwei Fächer zu (mit this.lieblingsfaecher.add("Mathe");). - Geben Sie beide Fächer auf der Konsole aus (keine Schleife verwenden!), etwa so: »Meine Lieblingsfächer sind: Mathe Informatik« @@@ Java_30-ArrayList-1b: Lieblingsfächer, ArrayList mit Getter Entfernen Sie die Anweisungen im Konstruktor von Übung 1a. Nun sollen Sie das Gleiche wie in Übung 1a programmieren, allerdings nicht im Konstruktor der Klasse Fachverwaltung, sondern in der Startklasse. Da die Liste private ist, kann die Startklasse nicht darauf zugreifen, Sie müssen also den Getter verwenden. @@@ Java_30-ArrayList-1c: Lieblingsfächer mit foreach-Schleife Nehmen Sie Übung 1b und lassen Sie sich die Lieblingsfächer mit einer foreach-Schleife ausgeben. Erstellen Sie ein Struktogramm für die foreach-Schleife! @@@ Java_30-ArrayList-1d: Lieblingsfächer mit foreach-Schleife und Klasse »Fach« Gleiche Übung wie 1c, aber diesmal wird eine Klasse "Fach" angelegt; die ArrayList speichert Objekte der Klasse Fach. Klassendiagramm hier: *LINK /16java/java31-arrayList-UE1d-klassendiagramm.png LINK* Sie regeln das alles erst mal über die Startklasse (neues Objekt Faecherverwaltung; 3 neue Fach-Objekte; Zuordnung der 3 Fächer zum Faecherverwaltungsobjekt; Ausgabe aller Fächer über foreach-Schleife). @@@ Java_30-ArrayList-1e: Lieblingsfächer, komplett Sie können die Übung 1d erweitern (auch die Startklasse erst mal lassen, siehe dieses Klassendiagramm: *LINK /16java/java31-arrayList-UE1e-klassendiagramm.png LINK* Hinweis zur Methode alleFaecherAusgeben() - Ausgabe wie oben Hinweis zur Methode getAlleFaecherAlsString():String - In dieser Methode müssen Sie einen String nicht ausgeben, sondern "zusammenbauen", da schließlich nur ein String zurückgegeben wird. Hinweis zur Methode notendurchschnittDerFaecherBerechnen():double - Erstellen Sie ein Struktogramm für diese Methode, BEVOR Sie sie programmieren! In der Startklasse legen Sie ein Objekt der Klasse Faecherverwaltung (Name des Objekts z.B. fw) an, 3 neue Objekte der Klasse Fach und weisen die Fächer dem Objekt fw zu. Dann probieren Sie die Methoden aus, z.B. fw(alleFaecherAusgeben) oder System.out.println(fw.getAlleFaecherAlsString()) oder System.out.println("Der Notenschnitt ist: " + fw.notendurchschnittDerFaecherBerechnen()) @@@ Java_30-ArrayList-2: Lottozahlen Die Lottozahlen vom Samstag waren 1,17,25,30,31,33. Speichern Sie sie in einer ArrayList "lottozahlen". Prüfen Sie, ob sich die Zahl 12 in der Liste befindet. Prüfen Sie, ob sich die Zahl 31 in der Liste befindet. Lassen Sie sich die Länge der Liste ausgeben (es müsste 6 herauskommen). Angenommen, Sie würden diesen Befehl eingeben: lottozahlen.remove(1); Was glauben Sie: Welche Zahl würde entfernt werden? Probieren Sie es aus, NACHDEM Sie Ihre Vermutung angestellt haben. (Lösung: lottozahlen.remove((Integer)1);) @@@ Java_30-ArrayList-3: Listen ausgeben Erstellen Sie mit einer for-Schleife eine ArrayList, die die Zahlen 10, 20, 30 ... bis 1000 enthält. Lassen Sie sich alle Elemente ausgeben, - einmal mit einer foreach-Schleife, - einmal mit dem ListIterator @@@ Java_30-ArrayList-4: ArrayList mit Objekten: Tierheim (schwierig) 1) Programmieren Sie die Klassen "Tier" und "Tierart" wie im Klassendiagramm *LINK /16java/java31-arrayList_bild_Tiere.png LINK* Die Methode alleDatenAusgeben() in der Klasse Tierart erzeugt eine Konsolenausgabe in Form von: "Tierart: Hund, Anzahl Beine: 4" 2) Erzeugen Sie in der Startklasse drei Tierarten und einige Tiere (z.B. 2 Hunde, 3 Spinnen, 2 Fische). 3) Erzeugen Sie in der Startklasse eine (lokale!) ArrayList namens tierheim, die Objekte der Klasse Tier aufnehmen kann. Fügen Sie die Tiere, die Sie angelegt haben, in die Liste ein. 4) Lassen Sie sich zur Kontrolle die Länge der ArrayList ausgeben (mit size()). 5) Lassen Sie sich den Namen und die Anzahl der Beine des Tiers mit Index 0 ausgeben (ArrayList-Methode get(...)). 6) Durchlaufen Sie die tierheim-Liste mit einer foreach-Schleife und lassen Sie für alle Tiere den Namen und die Spezifikationen der Tierart (alleDatenAusgeben()) ausgeben. Ergänzungsaufgabe zu 6) Tipp: Verwenden Sie hier die ListIterator-Methode nextIndex(); diese gibt Ihnen den Indexwert des aktuellen Elements zurück. Vergessen Sie nicht, am Ende der while-Schleife die ListIterator-Methode next() zu verwenden. 7) Lassen Sie sich in einer Schleife die Daten aller Tiere _nur einer Tierart_ ausgeben (also bspw. alle Hunde). Sie können diese Aufgabe kurz halten, indem Sie Aufgabe 6 aufbohren. @@@ Java_30_ArrayList-5: ArrayList-Methoden verwenden Gegeben sei eine ArrayList mit dem Bezeichnernamen besucherListe. Wie lautet der vollständige Befehl, … a) … um ein Element mit dem Wert "Hugo" einzufügen? Antwort b) … um ein Element mit dem Wert "Hugo" an Position 0 einzufügen? Antwort c) … um direkt nach b) das Element mit dem Wert "Hugo" zu löschen? Antwort d) … um herauszufinden, welchen Index das Element mit dem Wert "Hugo" hat? Antwort e) … um herauszufinden, ob sich ein Element mit dem Wert "Hugo" in der Liste befindet? Antwort