Heim Java javaLernprogramm So konvertieren Sie ein Array in eine Liste in Java

So konvertieren Sie ein Array in eine Liste in Java

Apr 19, 2023 am 09:13 AM
java list

1. Die gebräuchlichste Methode (nicht unbedingt die beste)

Mit der Methode Arrays.asList(strArray) können Sie die Liste nach der Konvertierung nicht hinzufügen oder löschen, sondern nur überprüfen und ändern. andernfalls wird eine Ausnahme ausgelöst.

Schlüsselcode: List list = Arrays.asList(strArray);

private void testArrayCastToListError() {   String[] strArray = new String[2];   List list = Arrays.asList(strArray);   //对转换后的list插入一条数据   list.add("1");   System.out.println(list);  }
Nach dem Login kopieren

Ausführungsergebnis:

Exception in thread "main" java.lang.UnsupportedOperationException  at java.util.AbstractList.add(AbstractList.java:148)  at java.util.AbstractList.add(AbstractList.java:108)  at com.darwin.junit.Calculator.testArrayCastToList(Calculator.java:19)  at com.darwin.junit.Calculator.main(Calculator.java:44)
Nach dem Login kopieren

Das Programm löst eine Ausnahme bei list.add("1") aus: UnsupportedOperationException.

Ursachenanalyse:

Der Rückgabewert von Arrays.asList(strArray) ist eine private statische interne Klasse java.util.Arrays.ArrayList in der Klasse java.util.Arrays, die nicht die Klasse java.util.ArrayList ist. Die Klasse „java.util.Arrays.ArrayList“ verfügt über die Methoden „set()“, „get()“, „contains()“ und andere, verfügt jedoch nicht über die Methoden „add()“ oder „remove()“, sodass beim Aufruf der Methode „add()“ ein Fehler gemeldet wird .

Verwendungsszenarien: Die Methode Arrays.asList(strArray) kann nur nach der Konvertierung eines Arrays in eine Liste verwendet werden. Es ist nicht erforderlich, darin Werte hinzuzufügen oder zu löschen. Sie kann nur als Datenquelle zum Lesen verwendet werden.

2. Nachdem das Array in eine Liste konvertiert wurde, wird die Methode zum Hinzufügen, Löschen, Ändern und Überprüfen unterstützt.

Konvertieren Sie den Rückgabewert von Arrays.asList(strArray) von java.util.Arrays.ArrayList in java. util über den Konstruktor von ArrayList.

Schlüsselcode: ArrayList

private void testArrayCastToListRight() {   String[] strArray = new String[2];   ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ;   list.add("1");   System.out.println(list);  }
Nach dem Login kopieren

Ausführungsergebnis: Ein Element „1“ wurde erfolgreich angehängt.

[null, null, 1]
Nach dem Login kopieren
Nach dem Login kopieren

Verwendungsszenario: Nach dem Konvertieren des Arrays in eine Liste müssen Sie die Liste hinzufügen, löschen, ändern und abfragen. Dies kann verwendet werden, wenn die Datenmenge in der Liste nicht groß ist.

3. Über die Collections.addAll()-Methode der Collection-Tool-Klasse (die effizienteste)

Konvertieren Sie über Collections.addAll(arrayList, strArray) eine Liste mit der gleichen Länge entsprechend der Länge des Array, und verwenden Sie dann die Methode Collections.addAll(), konvertieren Sie die Elemente im Array in Binärdateien und fügen Sie sie dann zur Liste hinzu. Dies ist die effizienteste Methode.

Schlüsselcode:

ArrayList< String> arrayList = new ArrayList<String>(strArray.length); Collections.addAll(arrayList, strArray);
Nach dem Login kopieren

Test:

private void testArrayCastToListEfficient(){   String[] strArray = new String[2];   ArrayList< String> arrayList = new ArrayList<String>(strArray.length);   Collections.addAll(arrayList, strArray);   arrayList.add("1");   System.out.println(arrayList);  }
Nach dem Login kopieren

Ausführungsergebnis: Ein Element „1“ wurde ebenfalls erfolgreich angehängt.

[null, null, 1]
Nach dem Login kopieren
Nach dem Login kopieren

Verwendungsszenario: Nach dem Konvertieren des Arrays in eine Liste müssen Sie die Liste hinzufügen, löschen, ändern und abfragen. Wenn die Datenmenge in der Liste groß ist, verwenden Sie sie zuerst, was die Betriebsgeschwindigkeit verbessern kann.

Hinweis: Im Anhang finden Sie den Quellcode der Collections.addAll()-Methode:

public static <T> boolean addAll(Collection<? super T> c, T... elements) {         boolean result = false;         for (T element : elements)             result |= c.add(element);//result和c.add(element)按位或运算,然后赋值给result         return result;     }
Nach dem Login kopieren

Frage und Antwort Frage: Wenn der Array-Typ ein Integer-Array ist, wird bei der Konvertierung in eine Liste ein Fehler gemeldet?

Antwort: Getestet in einer JDK1.8-Umgebung. Mit den drei Konvertierungsmethoden gibt es kein Problem. Verwenden Sie es mit Zuversicht. Die Methode und die Testergebnisse für die Konvertierung des Integer[]-Integer-Arrays in eine Liste lauten wie folgt:

Methode 1: Unterstützt keine Hinzufügungen und Löschungen

Integer[] intArray1 = new Integer[2]; List<Integer> list1 = Arrays.asList(intArray1); System.out.println(list1);
Nach dem Login kopieren

Laufende Ergebnisse:

[null, null]
Nach dem Login kopieren

Methode 2: Unterstützt Hinzufügungen und Löschungen

Integer[] intArray2 = new Integer[2]; List<Integer> list2 = new ArrayList<Integer>(Arrays.asList(intArray2)) ; list2.add(2); System.out.println(list2);
Nach dem Login kopieren

Ausführungsergebnisse:

[null, null, 2]
Nach dem Login kopieren

Methode 3: unterstützt Hinzufügungen und Löschungen und ist am effizientesten für große Datenmengen

Integer[] intArray3 = new Integer[2]; List<Integer> list3 = new ArrayList<Integer>(intArray3.length); Collections.addAll(list3, intArray3); list3.add(3); System.out.println(list3);
Nach dem Login kopieren

Ausführungsergebnisse:

[null, null, 3]
Nach dem Login kopieren

Zusammenfassend: Ganzzahliges Integer[]-Array zur Liste

Einfache Punkte, um Fehler zu machen: Mögliche Fehler können wie folgt sein. Konvertiert:

int[] intArray1 = new int[2]; List<Integer> list1 = Arrays.asList(intArray1);//此处报错!!!
Nach dem Login kopieren

Fehlerursache: Die Typen auf beiden Seiten des Gleichheitszeichens sind inkonsistent und die Kompilierung schlägt natürlich fehl. Siehe unten für die Analyse.

Sollten Sie also beim Deklarieren eines Arrays int[] oder Integer[] verwenden, welche Deklarationsmethode kann es korrekt in eine Liste konvertieren?

Antwort: Sie können nur Integer[] zum Konvertieren einer Liste verwenden

Der Grund wird als analysiert Folgendes:

Wir Schauen wir uns die Definition von List im Java-Quellcode an (haben Sie keine Angst, dass Sie den Quellcode nicht verstehen können, schauen Sie sich meine Analyse an, sie ist sehr leicht zu verstehen):

public interface List<E> extends Collection<E> {省略&hellip;}
Nach dem Login kopieren

Lasst uns Schauen Sie sich die Definition von Arrays.asList() im Java-Quellcode an:

public static List asList(T... a) {     return new ArrayList<>(a); }
Nach dem Login kopieren
  • Wie Sie dem obigen Quellcode entnehmen können, müssen Sie beim Deklarieren von List ein generisches übergeben

  • Was ist ein Referenztyp? Integer ist ein Referenztyp. Welcher Typ ist also Int? ein Basisdatentyp, kein Referenztyp. Aus diesem Grund gibt es in Java keine Liste.

  • Wenden Sie ein Beispiel auf andere Fälle an: Die anderen 8 Basisdatentypen Byte, Short, Int, Long, Float, Double und Char sind keine Referenztypen, also die 8 Basisdaten Arten können nicht als Form von List-Ginseng verwendet werden. Aber String, Array, Klasse und Schnittstelle sind Referenztypen und können als formale Parameter von List verwendet werden, sodass List existiert

Mit den oben genannten Grundkenntnissen schauen wir uns an, warum die zweite Zeile der folgenden beiden Codezeilen dies kann kompiliert und übergeben werden, aber der Kompilierungsfehler wird gemeldet? Typ muss Liste sein. Die dritte Zeile Es wird ein Fehler gemeldet, da die Typen auf beiden Seiten des Gleichheitszeichens inkonsistent sind. Die linke Seite: Liste

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie ein Array in eine Liste in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Quadratwurzel in Java Quadratwurzel in Java Aug 30, 2024 pm 04:26 PM

Leitfaden zur Quadratwurzel in Java. Hier diskutieren wir anhand eines Beispiels und seiner Code-Implementierung, wie Quadratwurzel in Java funktioniert.

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Armstrong-Zahl in Java Armstrong-Zahl in Java Aug 30, 2024 pm 04:26 PM

Leitfaden zur Armstrong-Zahl in Java. Hier besprechen wir eine Einführung in die Armstrong-Zahl in Java zusammen mit einem Teil des Codes.

Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

See all articles