Array in Liste umwandeln Java: 5 Methoden & 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

Array in Liste in Java: Vom Anfänger zum Profi in 10 Minuten

\n\n

Hast du jemals Code geschrieben, der perfekt mit einem Array funktioniert hat, und dann brauchtest du plötzlich eine Liste? Oder noch schlimmer: Du hast eine rätselhafte Exception erhalten, als du versucht hast, ein Element zu einer Liste hinzuzufügen, die aus einem Array erstellt wurde? Wenn ja – bist du hier genau richtig.

\n\n

Die Umwandlung von Array in Liste in Java ist eine dieser Aufgaben, die einfach erscheinen, aber viele Überraschungen bergen. Auf Stack Overflow hat diese Frage Hunderttausende von Aufrufen, und das aus gutem Grund: Hinter der scheinbaren Einfachheit verbergen sich wichtige Nuancen der Arbeit mit Collections.

\n\n

In diesem Artikel behandeln wir alle legitimen Methoden zur Konvertierung eines Arrays in eine Liste in Java, lernen, typische Fehler zu vermeiden, und finden heraus, welche Methode in welcher Situation die beste ist. Los geht's!

\n\n

Warum ist Arrays.asList() eine Falle?

\n\n

Die beliebteste Methode zur Umwandlung eines Arrays in eine Liste in Java ist die Methode Arrays.asList(). Sie sieht täuschend einfach aus:

\n\n
String[] fruits = {"apple", "banana", "cherry"};\nList<String> fruitList = Arrays.asList(fruits);
\n\n

Das war's? Fast. Aber es gibt drei wichtige "Aber", die nicht jeder kennt:

\n\n

1. Feste Größe

\n

Die mit Arrays.asList() erstellte Liste hat eine feste Größe. Versuche, ein Element hinzuzufügen:

\n\n
fruitList.add("orange"); // UnsupportedOperationException!
\n\n

Du erhältst eine UnsupportedOperationException. Warum? Weil es sich unter der Haube nicht um eine echte ArrayList handelt, sondern um eine interne Implementierung, die lediglich das Array umschließt.

\n\n

2. Änderungen im Array wirken sich auf die Liste aus

\n

Die Liste ist ein "Fenster" zum ursprünglichen Array. Änderst du das Array, ändert sich auch die Liste:

\n\n
fruits[0] = "apricot";\nSystem.out.println(fruitList.get(0)); // apricot
\n\n

Dies kann zu schwer auffindbaren Bugs führen, besonders wenn das Array zwischen Methoden übergeben wird.

\n\n

3. Primitive Typen funktionieren nicht

\n

Versuche, ein int-Array in eine Liste zu konvertieren:

\n\n
int[] numbers = {1, 2, 3};\nList<int[]> list = Arrays.asList(numbers); // nicht List<Integer>, sondern List<int[]>!
\n\n

Statt einer Liste von Zahlen erhältst du eine Liste, die ein einziges Element enthält – das gesamte Array. Java kann primitive Typen nicht automatisch in einer Liste verpacken.

\n\n

5 Methoden, um ein Array in eine Liste in Java umzuwandeln

\n\n

Schauen wir uns alle wichtigen Methoden zur Konvertierung eines Arrays in eine Liste in Java mit Beispielen und Erklärungen an.

\n\n

Methode 1: Der Klassiker Arrays.asList()

\n

Geeignet, wenn du eine Liste nur zum Lesen benötigst oder sicher bist, dass du ihre Größe nicht ändern wirst.

\n\n
String[] colors = {"red", "green", "blue"};\nList<String> colorList = Arrays.asList(colors);\n// Funktioniert: Lesen, Elemente ersetzen\ncolorList.set(0, "yellow");\n// Funktioniert nicht: Hinzufügen, Entfernen
\n\n

Methode 2: Erstellen einer neuen ArrayList

\n

Der sicherste Weg zur Umwandlung eines Arrays in eine ArrayList in Java ist die Erstellung einer neuen Instanz:

\n\n
String[] animals = {"cat", "dog", "bird"};\nList<String> animalList = new ArrayList<>(Arrays.asList(animals));\n// Jetzt kannst du hinzufügen und entfernen\nanimalList.add("fish"); // OK
\n\n

Dieser Ansatz liefert eine vollwertige, veränderbare Liste, die unabhängig vom ursprünglichen Array ist.

\n\n

Methode 3: Collections.addAll()

\n

Eine elegante Methode zur Umwandlung eines Arrays in eine Collection in Java. Besonders nützlich, wenn die Liste bereits existiert:

\n\n
String[] cities = {"Moscow", "Paris", "London"};\nList<String> cityList = new ArrayList<>();\nCollections.addAll(cityList, cities);\n// Oder in einer Zeile:\nList<String> cityList2 = new ArrayList<>(cities.length);\nCollections.addAll(cityList2, cities);

Blogs

Buchempfehlungen