Heim > Java > javaLernprogramm > Hauptteil

Wie konvertiere ich ein Array in eine Liste in Java? (Codebeispiel)

青灯夜游
Freigeben: 2019-11-26 17:11:12
nach vorne
22635 Leute haben es durchsucht

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.

Wie konvertiere ich ein Array in eine Liste in Java? (Codebeispiel)

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)
Nach dem Login kopieren

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");
   }
}
Nach dem Login kopieren

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");
   }
}
Nach dem Login kopieren

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);
      }
   }
}
Nach dem Login kopieren

Auf diese Weise wird eine String-Sammlung erstellt. Das Array myArray wird hinzugefügt. Die myList-Sammlung besteht aus drei Elementen:

Apple
Banana
Orange
Nach dem Login kopieren

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());
   }
}
Nach dem Login kopieren

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");
   }
}
Nach dem Login kopieren

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)
Nach dem Login kopieren

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());
   }
}
Nach dem Login kopieren

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");
   }
}
Nach dem Login kopieren

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());
   }
}
Nach dem Login kopieren

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());
   }
}
Nach dem Login kopieren

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));
      }
   }}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:javadevnotes
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage