Heim > Java > javaLernprogramm > Welche Einschränkungen gibt es bei der Arrays.asList()-Methode von Java und wie kann ich diese bei der Konvertierung primitiver Arrays in Listen überwinden?

Welche Einschränkungen gibt es bei der Arrays.asList()-Methode von Java und wie kann ich diese bei der Konvertierung primitiver Arrays in Listen überwinden?

Linda Hamilton
Freigeben: 2024-12-20 16:52:18
Original
645 Leute haben es durchsucht

What are the limitations of Java's Arrays.asList() method, and how can I overcome them when converting primitive arrays to lists?

Verstehen des Verhaltens von Arrays.asList() und seiner Einschränkungen

Bei der Arbeit mit Arrays und Sammlungen kommt es häufig vor, dass man ein Array in konvertieren möchte eine Liste zur einfacheren Handhabung. Zu diesem Zweck wird häufig die Methode Arrays.asList() von Java verwendet. Es gibt jedoch bestimmte Szenarien, in denen sich diese Methode möglicherweise nicht wie erwartet verhält.

Warum Arrays.asList() unterschiedliche Listen zurückgibt

Bedenken Sie den folgenden Code:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); // Works
int[] ints = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(ints); // Returns List<int[]>
Nach dem Login kopieren

Im ersten Beispiel gibt Arrays.asList() ein List zurück. enthält die angegebenen ganzzahligen Elemente. Im zweiten Beispiel wird jedoch eine List zurückgegeben. Dieser Unterschied tritt auf, weil:

  • Arrays.asList() einen varargs-Parameter akzeptiert, der zum Übergeben eines Arrays oder einer Liste einzelner Elemente verwendet werden kann.
  • Im ersten Beispiel Wir übergeben einzelne Integer-Elemente, die die Methode als Integer-Objekte interpretiert.
  • Im zweiten Beispiel übergeben wir ein int[], das die Methode als behandelt ein einzelnes Objekt.

Autoboxing-Einschränkungen

Die Autoboxing-Funktion von Java wandelt primitive Typen automatisch in ihre entsprechenden Wrapper-Typen um (z. B. int in Integer). Diese Konvertierung erfolgt jedoch nur für einzelne Elemente, nicht für Arrays von Grundelementen. Wenn daher ein int[] an Arrays.asList() übergeben wird, findet kein Autoboxing statt und die Methode gibt eine List zurück.

Lösungen

Um dieses Verhalten zu korrigieren und eine List Von einem int[] aus haben Sie drei Möglichkeiten:

  • Verwenden Sie eine Hilfsbibliothek: Bibliotheken wie Guava bieten Methoden zum Konvertieren verschiedener Arten von Arrays in Listen. Beispielsweise kann com.google.common.primitive.Ints.asList() verwendet werden, um eine Liste zu erstellen. aus einem int[].
  • Erstellen Sie ein neues Array: Sie können ein neues Integer[] erstellen, das die Elemente des int[] enthält, und dieses Array dann an Arrays.asList() übergeben. .
  • Iterieren und Boxen: Sie können manuell durch int[] iterieren, jedes Element boxen und hinzufügen eine Liste.

Das obige ist der detaillierte Inhalt vonWelche Einschränkungen gibt es bei der Arrays.asList()-Methode von Java und wie kann ich diese bei der Konvertierung primitiver Arrays in Listen überwinden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage