Q1 OOP in Java

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"]
Wo die ArrayList in der Hierarchie sitzt

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.

Die Aufgabenstellung lautet

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

Lieblingsfaecher.java
/* meininfokurs.cmrg.site */
/**
 *
 * 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 willstArrayArrayList
Größea.lengthliste.size()
Element lesena[0]liste.get(0)
Element änderna[0] = x;liste.set(0, x);
Element anhängengeht nichtliste.add(x);
Element löschengeht nichtliste.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

Konsole
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.

Aufgabe suchen

Tippe los. Strg+K öffnet die Suche von überall.

Zuletzt angesehen

Werbung