ArrayList: Lieblingsfächer
Lösung geprüft
Die Aufgabe der heutigen Stunde sind die Lieblingsfächer! Das ist die
erste Aufgabe mit einer ArrayList, und genau dafür ist sie
gebaut: Teil 2 der Aufgabe sagt mitten drin „Oh, Entschuldigung, es
sollten drei sein". Mit einem normalen Array wäre das jetzt Pech
gewesen.
Denn der wichtige Unterschied ist: eine ArrayList ist
dynamisch, die Größe ist veränderbar. Ein Array legst du mit
new int[6] an und dann sind es für immer sechs Plätze.
Die ArrayList ist dabei nur eine von mehreren
Datenstrukturen. Im OneNote steht sie in dieser Hierarchie:
flowchart TD
C["Collections (Container)"] --> L["List (Liste)"]
C --> Q["Queue"]
C --> S["Set (Menge)"]
L --> A["ArrayList"]
L --> LL["LinkedList"]
Wichtig ist erstmal nur die unterste Ebene: ArrayList ist
eine Sorte von List, und List ist eine Sorte
von Container. Die LinkedList daneben ist schneller beim
Löschen und Hinzufügen, die ArrayList beim Zugriff auf
einzelne Elemente.
1. Erstellen Sie eine ArrayList, die Ihre zwei Lieblingsfächer
enthält.
2. Oh, Entschuldigung: Es sollten drei Lieblingsfächer sein. Fügen
Sie noch ein drittes ein.
3. Durchlaufen Sie die Liste mit einer for-Schleife (das geht
eigentlich anders, lernen wir aber noch) und geben Sie die
Lieblingsfächer aus im Format „Meine Lieblingsfächer sind: Deutsch
Englisch Erdkunde".
4. Ändern Sie das erste Fach in „Leibesübung".
Lösungsprozess der Aufgabe
/**
*
* ArrayList verwenden - Lieblingsfaecher
*
* @version 1.0 vom 09.09.2025
* @meininfokurs.cmrg.site
*/
import java.util.ArrayList;
public class Lieblingsfaecher {
public static void main(String[] args) {
// 1. Liste mit zwei Faechern
ArrayList<String> faecher = new ArrayList<String>();
faecher.add("Informatik");
faecher.add("Mathe");
// 2. Doch drei - kein Problem, die Liste waechst einfach mit
faecher.add("Englisch");
// 3. Ausgeben, EVA-maessig erst zusammenbauen, dann ausgeben
String ausgabe = "Meine Lieblingsfächer sind:";
for (int i = 0; i < faecher.size(); i++) {
ausgabe += " " + faecher.get(i);
}
System.out.println(ausgabe);
// 4. Das erste Fach austauschen
faecher.set(0, "Leibesübung");
ausgabe = "Meine Lieblingsfächer sind:";
for (int i = 0; i < faecher.size(); i++) {
ausgabe += " " + faecher.get(i);
}
System.out.println(ausgabe);
} // end of main
} // end of class Lieblingsfaecher
Der import ganz oben
Die ArrayList gehört nicht zum Sprachkern von Java,
sondern zur Standardbibliothek. Deshalb muss man sie importieren:
import java.util.ArrayList;
Wenn du den vergisst, sagt der Compiler cannot find symbol –
class ArrayList. Der Java-Editor bietet das meistens selbst an,
sobald du ArrayList tippst. Die Zeile steht
über der Klasse, nicht darin.
Die spitzen Klammern
ArrayList<String> faecher = new ArrayList<String>();
In den spitzen Klammern steht, was in die Liste rein darf. Das
nennt sich Generics. ArrayList<String> ist eine
Liste, in die nur Texte passen – versuchst du eine Zahl reinzulegen,
meckert schon der Compiler und nicht erst das laufende Programm.
Und Achtung: da muss ein Objekttyp rein.
ArrayList<int> geht nicht,
ArrayList<Integer> schon.
int ist ein einfacher Datentyp, Integer die
Objektvariante davon. Für double heißt sie
Double, für char heißt sie
Character. Bei String fällt es nicht auf, weil
der sowieso ein Objekt ist.
size() statt length
Bei einem Array fragt man zahlen.length – ohne Klammern,
weil es ein Attribut ist. Bei einer Liste heißt es
faecher.size() – mit Klammern, weil es eine Methode ist.
Das verwechselt man am Anfang ständig.
| Was du willst | Array | ArrayList |
|---|---|---|
| Größe | a.length | liste.size() |
| Element lesen | a[0] | liste.get(0) |
| Element ändern | a[0] = x; | liste.set(0, x); |
| Element anhängen | geht nicht | liste.add(x); |
| Element löschen | geht nicht | liste.remove(0); |
set statt add bei Teil 4
Teil 4 will das erste Fach ändern, nicht ein neues
dazupacken. Also set:
faecher.set(0, "Leibesübung"); // ersetzt das erste Element
faecher.add(0, "Leibesübung"); // schiebt es davor, die Liste hat dann 4 Eintraege
Beide Zeilen sehen fast gleich aus und tun etwas völlig anderes. Wer
hier add nimmt, hat plötzlich vier Lieblingsfächer.
Und so sieht es aus
Meine Lieblingsfächer sind: Informatik Mathe Englisch
Meine Lieblingsfächer sind: Leibesübung Mathe Englisch
Der Hinweis in der Aufgabe, dass das Durchlaufen „eigentlich anders" geht, meint die for-each-Schleife. Die kommt in der nächsten Aufgabe.