Initialisierung von ArrayList in Java in einer Zeile: Geheimnisse und Fallstricke

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

ArrayList in einer Zeile in Java: Vom Anfänger zum Profi



Stellen Sie sich vor: Sie schreiben einen Test, erstellen einen Prototyp oder möchten einfach schnell eine Liste von Zeichenketten definieren. In Python sieht das so aus: my_list = ["a", "b", "c"]. In Java… beginnt das Kopfzerbrechen. Muss man wirklich jedes Mal drei bis vier Zeilen schreiben und add() für jedes Element aufrufen? Spoiler: Nein. In diesem Artikel analysieren wir alle Möglichkeiten, eine ArrayList in einer Zeile zu initialisieren, beantworten die häufigsten Fragen von Stack Overflow und zeigen, welche Methode je nach Aufgabe die richtige ist. Los geht's!



Dieses Material basiert auf einer echten, beliebten Stack Overflow-Frage, die tausende Aufrufe gesammelt hat. Wir haben sie für das Lernen angepasst, damit Sie den Code nicht nur kopieren, sondern verstehen, warum er funktioniert (oder nicht funktioniert).



Warum ist die einfache Initialisierung so mühsam?



In Java gibt es ArrayList – ein dynamisches Array. Aber es hat kein eingebautes Literal zum Erstellen mit Daten, wie es Arrays haben (String[] arr = {"a", "b", "c"};). Daher schreiben Anfänger oft so:



ArrayList<String> list = new ArrayList<>();list.add("Java");list.add("Python");list.add("JavaScript");


Das funktioniert, benötigt aber 4 Zeilen. Was, wenn es 10 Elemente sind? 100? Man wünscht sich etwas Kompakteres. Lassen Sie uns alle legalen und weniger legalen Möglichkeiten durchgehen, dies in einer Zeile zu tun.



Methode 1: Der Klassiker – Arrays.asList()



Die beliebteste Methode, die Sie in Antworten auf Stack Overflow finden:



ArrayList<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));


Hier erstellen wir zunächst eine Liste fester Größe mit Arrays.asList() und übergeben sie dann an den Konstruktor von ArrayList. Das Ergebnis ist eine vollwertige, veränderbare Liste. Elemente können hinzugefügt, entfernt und geändert werden.



Wichtig: Arrays.asList() selbst gibt kein ArrayList zurück! Es gibt seine eigene interne Implementierung einer Liste fester Größe zurück. Wenn Sie versuchen, add() auf das Ergebnis von Arrays.asList() aufzurufen, erhalten Sie eine UnsupportedOperationException. Merken Sie sich das – dies ist die häufigste Frage in Vorstellungsgesprächen und in Stack Overflow-Threads.



Wann verwenden?

  • Wenn Sie eine veränderbare Liste benötigen.
  • Wenn Sie mit Java 7 und niedriger arbeiten (vor Java 9).


Methode 2: Java 9+ – List.of()



Ab Java 9 gibt es die Factory-Methode List.of():



List<String> immutableList = List.of("a", "b", "c");


Kurz, schön, prägnant. Aber es gibt einen Haken: Die resultierende Liste ist unveränderbar (immutable). Sie können kein Element hinzufügen oder entfernen. Wenn Sie es versuchen, erhalten Sie eine UnsupportedOperationException.



Wenn Sie genau eine ArrayList benötigen, umschließen Sie sie:



ArrayList<String> list = new ArrayList<>(List.of("a", "b", "c"));


Diese Methode ist Arrays.asList() vorzuziehen, wenn Sie Java 9 oder höher verwenden, da List.of() eine strukturell unveränderbare Liste zurückgibt (Größe kann nicht geändert werden), im Gegensatz zu Arrays.asList(), das das Ändern von Elementen über set() erlaubt.



Wann verwenden?

  • Java 9+
  • Kurze Syntax gewünscht
  • Sie planen nicht, die Liste zu ändern (oder umschließen sie in eine ArrayList)


Methode 3: Doppelte Initialisierung (Double Brace) – Antipattern



Auf Stack Overflow taucht dieser Trick oft auf. Er sieht so aus:



ArrayList<String> list = new ArrayList<>() {{    add("a");    add("b");    add("c");}};


Was passiert hier? Wir erstellen eine anonyme innere Klasse, die von ArrayLi

Blogs

Buchempfehlungen