Dynamische Arrays in Java mit ArrayList

Lerne, wie du in Java die Klasse ArrayList benutzen kannst, um dynamische und potentiell "unendlich lange" Arrays zu verwenden.
Noch nicht sicher genug im Webdesign? Lass dir in unseren Programmier-Kursen in Kirchdorf oder unserer Wichtel-Webdesign-Agentur in Pettenbach weiterhelfen!

Worum geht´s?

In diesem Java Tutorial lernen wir die Klasse ArrayList kennen und nutzen. Sie ist immer dort hilfreich, wenn wir dynamische Listen benötigen, also Listen, bei denen wir vor dem Start des Programms nicht wissen, wie groß sie werden können. Anstatt also für diese Fälle einen übergroßen Array zu definieren (mit entsprechendem Speicherplatz-Verbrauch), überlassen wir das der Klasse ArrayList.

1. Eine ArrayList in Java anlegen

Da eine ArrayList in Java kein primitiver Datentyp ist wie z.B. int oder char, müssen wir sie – ähnlich wie bei der Scanner-Klasse als Objekt einer Klasse anlegen, also mit new und einer Klammer() am Ende:

ArrayList liste = new ArrayList();

Nun haben wir eine leere ArrayList angelegt.

Falls ArrayList bei dir in rot angezeigt wird, musst du die Klasse ähnlich wie beim Scanner erst importieren. Dazu musst du vor deiner Klasse „import java.util.ArrayList;“ einfügen:

import java.util.ArrayList;

public class StellDichVorV1 {
    public static void main(String[] args) {

Falls du mit IntelliJ arbeitest, kannst du wieder mit der linken Maustaste auf ArrayList klicken und die Tastatur-Kürzel ALT+ENTER benutzen, um die Klasse zu importieren.

2. Elemente in eine ArrayList hinzufügen und auslesen

Es ist sehr einfach, Elemente in unsere Liste einzufügen. Dazu brauchen wir lediglich den Befehl .add() benutzen:

liste.add(5);
liste.add(7);

Nun umfasst unsere ArrayList liste die Elemente 5 und 7.

Um das auch zu überprüfen, geben wir das Ganze mit System.out.println() aus:

ArrayList liste = new ArrayList();
liste.add(5);
liste.add(7);
System.out.println(liste);

Die – durchaus stylische – Ausgabe des Ganzen:

[5, 7]

3. Ein Element aus einer ArrayList auslesen

Wollen wir z.B. das 4te Element einer ArrayList auswählen, so verwenden wir die Methode .get() dazu:

System.out.println(liste.get(3));

Achtung: Die Zählung beginnt wieder bei 0, deswegen müssen wir für das 4te Element die Zahl 3 in die Klammern einsetzen.

4. Die Länge bzw. Größe einer ArrayList herausfinden

Während wir bei Arrays mit .length herausfinden können, wie viele Elemente der Array hat, brauchen wir bei der Klasse ArrayList die Methode .size() dazu.

Dies lässt sich auch gut nutzen, um eine Schleife durch eine ArrayList „wandern“ zu lassen:

for (int i = 0; i < liste.size(); i++) {
    System.out.println(liste.get(i));
}

5. Die Position eines Elements in der ArrayList herausfinden

Um herauszufinden, an welcher Position der ArrayList sich ein bestimmter Wert befindet, können wir die Methode .indexOf() benutzen:

ArrayList liste = new ArrayList();
liste.add(5);
liste.add(7);
liste.add(2);
liste.add(5);
System.out.println(liste);
System.out.println(liste.indexOf(2));
System.out.println(liste.indexOf(5));

Die Position vom Wert 2 in der Liste ist 2 (weil ähnlich wie bei Arrays die Zählung bei 0 beginnt), vom Wert 5 ist sie 0, weil immer nur das erste Ergebnis gewählt wird.

6. Herausfinden, ob sich ein Element in einer ArrayList befindet

Mit Hilfe der Methode .contains() können wir herausfinden, ob sich ein Element innerhalb einer ArrayList befindet:

if (liste.contains(7)) {
    System.out.println("7 ist in der Liste!");
}

Die Methode .contains() gibt dabei einen boolean-Wert zurück.

7. Elemente aus einer ArrayList entfernen

Wollen wir alle Elemente aus einer ArrayList entfernen, so geht das mit Hilfe der Methode .clear(), wollen wir nur einzelne Elemente entfernen, können wir .remove() benutzen:

liste.clear(); // entfernt ALLE Elemente der Liste
liste.remove("Hallo"); // entfernt das Element mit dem VARIABLEN-WERT "Hallo"
liste.remove(2); // entfernt das Element auf dem INDEX 2

Woher weiß Java nun, ob bei einer Liste mit .remove(2) das 3te Element oder der Wert 2 entfernt werden muss?

Im Zweifelsfall geht Java davon aus, dass wir den Index meinen, also die Position in der Liste.

Wollen wir nun, dass die Zahl 2 entfernt wird, können wir folgendes verwenden:

liste.remove(Integer.valueOf(5)); // entfernt die ZAHL 5 aus einer int-ArrayList

8. Eine Kopie einer ArrayList erstellen

Da ArrayList eine Klasse ist, können wir folgendes nicht tun, um eine Kopie der ersten ArrayList zu erhalten:

ArrayList liste1 = new ArrayList();
liste1.add(5);
liste1.add(7);
liste1.add(2);
liste1.add(5);
ArrayList liste2 = liste1;

Nun sind zwar in liste2 alle Elemente der liste1 drin, aber wenn wir etwas in liste2 verändern, verändern wir liste1 gleich mit. Beide Variablen zeigen also auf die gleiche Liste.

Wollen wir eine echte Kopie erstellen, brauchen wir die Methode .clone() dazu:

ArrayList liste2 = (ArrayList) liste.clone();

Achtung: Dies funktioniert aber nur, solange die Elemente in der ArrayList primitive Datentypen wie int oder char sind. Haben wir Objekte, die aus Klassen erzeugt wurden (wie z.B. ein Scanner) in der Liste, müssen wir die Kopie „händisch“ vornehmen.

9. Eine ArrayList sortieren lassen

Man kann eine ArrayList auch sortieren lassen, und dabei sogar bestimmen, auf welche Weise.

Der einfachste Weg wäre dieser, für aufsteigendes Sortieren:

liste2.sort(Comparator.naturalOrder());

Man kann aber auch selbst Comparator-Varianten erstellen usw., nur würde das den Rahmen dieses Tutorials sprengen.

Das waren erstmal die wichtigsten Methoden der Klasse ArrayList für dich.

Viel Freude damit!

Diskussion zum Tutorial

Du bist aus Oberösterreich? Dann nütze doch auch unsere flexiblen Programmier-Kurse in Kirchdorf - oder gib deine Website gerne in die guten Hände unserer erfahrenen Wichtel-Webdesign-Agentur.