Manchmal müssen wir den Array-Typ in einen Sammlungstyp konvertieren, da letzterer eine leistungsfähigere Datenstruktur ist und java.util.List viele Funktionen hat, die normale Arrays nicht unterstützen. Beispiel: Mit der integrierten Methode von List können wir leicht erkennen, ob die Liste einen bestimmten Wert enthält. Hier sind einige Beispiele für die Konvertierung eines Arrays in eine Liste.
Array in Liste konvertieren über java.util.Arrays.asList()
Die Arrays-Klasse verfügt über eine praktische Methode asList, die bei Konvertierungsaufgaben hilfreich sein kann. Die folgende Syntax lautet:
public static <T> List<T> asList(T... a)
Hinweis: Die Parameter müssen keine Arrays sein, es können auch variable Parameter verwendet werden. Es kann eine Liste erstellt werden
public class Test { public static void main(String[] args) { List<String> myList = Arrays.asList("Apple"); } }
Der obige Code erstellt eine Sammlung, die ein Element „Apple“ enthält. Wir können auch Folgendes tun:
public class Test { public static void main(String[] args) { List<String> myList = Arrays.asList("Apple", "Orange"); } }
Dadurch wird eine Menge mit zwei Elementen „Apple“, „Orange“ generiert
, da es sich um einen variablen Parameter handelt. Wir können ein Array übergeben und die Array-Elemente werden als Parameter erkannt. Beispiel:
public class Test { public static void main(String[] args) { String[] myArray = { "Apple", "Banana", "Orange" }; List<String> myList = Arrays.asList(myArray); for (String str : myList) { System.out.println(str); } } }
Auf diese Weise wird eine String-Sammlung erstellt. Das Array myArray wird hinzugefügt. Die myList-Sammlung besteht aus drei Elementen:
Apple Banana Orange
Trap
Diese Methode hat einige Probleme. Das übergebene Array muss sei ein Objekt, kein Array primitiver Typen. Zum Beispiel:
public class Test { public static void main(String[] args) { int[] myArray = { 1, 2, 3 }; List myList = Arrays.asList(myArray); System.out.println(myList.size()); } }
Die Codeausgabe ist 1. Warum? Da die asList-Methode einen variablen Parameter eines Objekts erwartet, der übergebene Parameter jedoch ein Array primitiver Typen ist, erstellt sie eine Array-Sammlung. Das einzige Element dieser Sammlung ist also myArray. myList.get(0)
gibt also dasselbe Objekt wie myArray zurück.
Das von asList() erstellte Objekt hat eine feste Größe.
Das von der asList()-Methode zurückgegebene Listenobjekt hat eine feste Größe kann nicht mehr aufnehmen. Es gibt viele Elemente, wie zum Beispiel:
public class Test { public static void main(String[] args) { String[] myArray = { "Apple", "Banana", "Orange" }; List<String> myList = Arrays.asList(myArray); myList.add("Guava"); } }
Die Ausgabe lautet wie folgt:
Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148) at java.util.AbstractList.add(AbstractList.java:108) at Test.main(Test.java:8)
Da myList eine feste Länge hat, können keine weiteren Elemente hinzugefügt werden.
Weil das von dieser Methode zurückgegebene List-Objekt nicht die ArrayList im java.util-Paket ist, sondern der ArrayList-Typ innerhalb von Arrays. Die Klasse implementiert die Methoden add, revmove und clear nicht, sodass jeder Aufruf zum Ändern der Sammlungsstruktur fehlschlägt.
Konvertieren Sie den grundlegenden Array-Typ in eine Liste
Wie oben erwähnt. Die Übergabe eines Arrays von Basistypen an die asList-Methode funktioniert nicht. Eine Lösung ohne die Einführung einer Drittanbieterbibliothek besteht darin, den Java8-Stream zu übergeben. Das Beispiel lautet wie folgt:
public class Test { public static void main(String[] args) { int[] intArray = { 5, 10, 21 }; List myList = Arrays.stream(intArray).boxed() .collect(Collectors.toList()); } }
Jedes Element des Arrays wird konvertiert Vom Typ „int“ in den Typ „Integer“ (Boxing) wird das Array in den Typ „Liste“ konvertiert.
Konvertieren Sie das Array in eine Liste, die das Hinzufügen von Elementen ermöglicht
Wie im Trap-Abschnitt oben erwähnt, tut dies die Methode Arrays.asList() Das Hinzufügen oder Entfernen des Elements wird nicht unterstützt. Wenn Sie dies nicht tun möchten, finden Sie hier die Alternativen:
public class Test { public static void main(String[] args) { String[] myArray = { "Apple", "Banana", "Orange" }; List<String> myList = new ArrayList<String>(Arrays.asList(myArray)); myList.add("Guava"); } }
Dieser Code erstellt explizit ein neues ArrayList-Objekt und fügt ihm dann die Ergebnisse von Arrays.asList hinzu. Weil wir eine ArrayList erstellt haben. Es werden also keine Entfernungseinschränkungen hinzugefügt und es gibt vier Elemente, bevor die Ausführung des obigen Codes endet. Erwarten Sie nicht, dass Ihr Code bei der Ausführung Ausnahmen auslöst.
Konvertieren Sie die Array-Gruppe selbst in eine Liste.
Manchmal ist es besser, unsere eigene Implementierung zu verwenden, um das Problem zu lösen. Das Folgende ist ein einfaches Beispiel für die Konvertierung eines Java-Arrays in eine Liste:
public class Test { public static void main(String[] args) { String[] myArray = { "Apple", "Banana", "Orange" }; List<String> myList = new ArrayList<String>(); for (String str : myArray) { myList.add(str); } System.out.println(myList.size()); } }
Die erwartete Ausgabe des Codes ist 3. Da die Sammlung nach Ausführung der Logik 3 Elemente enthält.
Der Nachteil unseres Codes ist, dass er länger ist und wir das Rad neu erfinden. Der Vorteil besteht darin, dass wir uns anpassen und anpassen können, wenn sich unsere Bedürfnisse ändern. Beispiel: Im folgenden Code wird jedes Element zweimal zur Liste hinzugefügt
public class Test { public static void main(String[] args) { String[] myArray = { "Apple", "Banana", "Orange" }; List<String> myList = new ArrayList<String>(); for (String str : myArray) { myList.add(str); myList.add(str); } System.out.println(myList.size()); } }
Die Ausgabe ist 6, da alle Elemente im Array zweimal hinzugefügt werden. Hier ist ein weiteres Beispiel für die Konvertierung eines String-Arrays in eine Liste
public class Test { public static void main(String[] args) { String[] myArray = { "5", "6", "7" }; List<Integer> myList = new ArrayList<Integer>(); for (String str : myArray) { myList.add(Integer.valueOf(str)); } }}
Analysiert jeden String im Array und konvertiert ihn in die entsprechende Ganzzahl. Die resultierende Liste enthält alle konvertierten Ganzzahlen.
Empfohlenes Lernen: Java-Video-Tutorial
Das obige ist der detaillierte Inhalt vonWie konvertiere ich ein Array in eine Liste in Java? (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!