Array in Liste in Java: Vom Anfänger zum Profi in 10 Minuten
\n\nHast 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\nDie 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\nIn 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\nWarum ist Arrays.asList() eine Falle?
\n\nDie beliebteste Methode zur Umwandlung eines Arrays in eine Liste in Java ist die Methode Arrays.asList(). Sie sieht täuschend einfach aus:
String[] fruits = {"apple", "banana", "cherry"};\nList<String> fruitList = Arrays.asList(fruits);\n\nDas war's? Fast. Aber es gibt drei wichtige "Aber", die nicht jeder kennt:
\n\n1. Feste Größe
\nDie mit Arrays.asList() erstellte Liste hat eine feste Größe. Versuche, ein Element hinzuzufügen:
fruitList.add("orange"); // UnsupportedOperationException!\n\nDu 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.
2. Änderungen im Array wirken sich auf die Liste aus
\nDie Liste ist ein "Fenster" zum ursprünglichen Array. Änderst du das Array, ändert sich auch die Liste:
\n\nfruits[0] = "apricot";\nSystem.out.println(fruitList.get(0)); // apricot\n\nDies kann zu schwer auffindbaren Bugs führen, besonders wenn das Array zwischen Methoden übergeben wird.
\n\n3. Primitive Typen funktionieren nicht
\nVersuche, ein int-Array in eine Liste zu konvertieren:
\n\nint[] numbers = {1, 2, 3};\nList<int[]> list = Arrays.asList(numbers); // nicht List<Integer>, sondern List<int[]>!\n\nStatt 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\n5 Methoden, um ein Array in eine Liste in Java umzuwandeln
\n\nSchauen wir uns alle wichtigen Methoden zur Konvertierung eines Arrays in eine Liste in Java mit Beispielen und Erklärungen an.
\n\nMethode 1: Der Klassiker Arrays.asList()
\nGeeignet, wenn du eine Liste nur zum Lesen benötigst oder sicher bist, dass du ihre Größe nicht ändern wirst.
\n\nString[] 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\nMethode 2: Erstellen einer neuen ArrayList
\nDer sicherste Weg zur Umwandlung eines Arrays in eine ArrayList in Java ist die Erstellung einer neuen Instanz:
\n\nString[] 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\nDieser Ansatz liefert eine vollwertige, veränderbare Liste, die unabhängig vom ursprünglichen Array ist.
\n\nMethode 3: Collections.addAll()
\nEine elegante Methode zur Umwandlung eines Arrays in eine Collection in Java. Besonders nützlich, wenn die Liste bereits existiert:
\n\nString[] 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);