[Java] Konvertieren Sie ein Array in ArrayList * Achtung

So konvertieren Sie ein Array in ArrayList und Vorsichtsmaßnahmen / Fallstricke

Ich werde Ihnen zeigen, wie Sie ein Array in eine ArrayList konvertieren. Es gibt Fallstricke, in die Sie sich definitiv verlieben werden, lesen Sie also bis zum Ende weiter!

ListToArray.java


String[] array ={"A","B","C"};
List<String> list =  Arrays.asList(array);
System.out.println("Array= " + Arrays.toString(array));
System.out.println("List = " + list.toString());

Ergebnis

Array= [A, B, C]
List = [A, B, C]

erledigt! Es ist einfach.

... aber

Versuchen Sie, ein Element hinzuzufügen

ListToArray.java


//Unterlassung
List<String> list =  Arrays.asList(array);
list.add("D"); //Addiere D.!

Ergebnis

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.add(AbstractList.java:148)
	at java.util.AbstractList.add(AbstractList.java:108)
	at codeSample.ListToArray.main(ListToArray.java:13)

Erhalten Sie einen Fehler

Warum

Versuchen Sie, die Klasse zur Rückkehr zu bewegen

ListToArray.java


//Unterlassung
List<String> list =  Arrays.asList(array);
ArrayList<String> arrayList = new ArrayList<String>();
System.out.println("Regelmäßige ArrayList= " + arrayList.getClass());
System.out.println("Konvertierung vom Array= " + list.getClass());

Ergebnis

Regelmäßige ArrayList= class java.util.ArrayList
Konvertierung vom Array= class java.util.Arrays$ArrayList

Hmm, etwas anderes!

Versuchen Sie es mit tiefem Graben

java:java.util.Arrays.class


//Unterlassung
public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }
    private static class ArrayList<E> extends AbstractList<E>
        implements RandomAccess, java.io.Serializable
    {
        private static final long serialVersionUID = -2764017481108945198L;
        private final E[] a; //←←← ist endgültig!

        ArrayList(E[] array) {
            a = Objects.requireNonNull(array);    //Referenzkopie (zusätzlicher Hinweis)
        }

        @Override
        public int size() {
            return a.length;
        }
//Unterlassung
    }

Es wurde eine vereinfachte Version von ArrayList zurückgegeben, die in der inneren Klasse der Arrays-Klasse definiert ist!

java:java.util.AbstractList.class


public boolean add(E e) {
    add(size(), e);
    return true;
}
//Unterlassung
public void add(int index, E element) {
    throw new UnsupportedOperationException();
}

Fix

ListToArray.java


//Unterlassung
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(array));
arrayList.add("D");
System.out.println("Array= " + Arrays.toString(array));
System.out.println("List = " + arrayList.toString());

Konvertieren Sie den Bereich von ArrayList neu. (Zusatz)

Ergebnis

Array= [A, B, C]
List = [A, B, C, D]

Arrays.asList () führt nur eine Typkonvertierung durch, und der referenzierte Speicherbereich bleibt gleich. (Zusatz)

Recommended Posts

[Java] Konvertieren Sie ein Array in ArrayList * Achtung
[Java] Konvertiert ArrayList in Array
So konvertieren Sie Java Base
So initialisieren Sie ein Java-Array
So konvertieren Sie eine Datei in ein Byte-Array in Java
Konvertieren Sie das Alphabet in 26 Basis + ungefähr Array-Länge
[Java] -Array
Java-Array
[Java] Ich möchte ein Byte-Array in eine Hexadezimalzahl konvertieren
Java (Array)
Java-Array
[Java] Array
Java Basic Learning Content 2 (Array / ArrayList)
[Java] Konvertiere 1 in N Liste in Karte
Java-Array
[Java] Unterschied zwischen Array und ArrayList
[Java] Verwendung von List [ArrayList]
Für Java-Anfänger: Liste, Karte, Iterator / Array ... Wie konvertiere ich?
Konvertieren Sie ein zweidimensionales Array mit der Java 8 Stream-API in das CSV-Format
[Java] Konvertierung von Array zu Liste
[Java] Array
So erstellen Sie ein Java-Array
Konvertieren Sie das 2D-Array von Swift in das 2D-Array von C.
Konvertieren Sie alle Android-Apps (Java) in Kotlin
Konvertieren Sie von der Java-UTC-Zeit in die JST-Zeit
[Java] Konvertiert Null vom Objekttyp in String-Typ
Konvertieren Sie SVG-Dateien in Java in PNG-Dateien
Konvertieren Sie ein Array von Zeichenfolgen in Zahlen
Java-Array-Variable
[Java] Array-Hinweis
[Java] Einführung in Java
Einführung in Java
[Java] Von zwei Listen zu einer Array-Liste
Konvertieren Sie eine Zeichenfolge mit swift in ein zeichenweises Array
So konvertieren Sie einen Soliditätsvertrag in eine Java-Vertragsklasse
Konvertieren Sie verschachtelte Java-Beans in das Format aaa.bbb [0] .ccc
Zweidimensionales Array, indem Sie gerade erst anfangen, Java zu studieren
Starten Sie Docker von Java aus, um Office-Dokumente in PDF zu konvertieren
<java> Zip-Datei lesen und direkt in String konvertieren
[Java] PDF-Version konvertieren
Beherrschen von Kotlin ~ Konvertieren von Java-Dateien in Kotlin-Dateien Road to Graduation ~ Teil 3
Konvertieren Sie Java Enum Enumeration und JSON von und nach Jackson
Beispielcode zum Konvertieren von List in List <String> in Java Stream
Konvertieren Sie das Array von error.full_messages in Zeichen und geben Sie es aus
Beherrschen von Kotlin ~ Konvertieren von Java-Dateien in Kotlin-Dateien Road to Graduation ~ Teil 2
[Java] Stellen Sie eine Verbindung zu MySQL her
Informationen zur Java-Array-Liste
Kotlins Verbesserungen an Java
Java-Anwendungen konvertieren Word-Dokumente (DOC / DOCX) in PDF
Von Java zu Ruby !!
Beherrschen von Kotlin ~ Konvertieren von Java-Dateien in Kotlin-Dateien Road to Graduation ~ Teil 1
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
Einführung in den Java-Befehl
[Java] Was ist ArrayList?
Speichern von Zeichenfolgen von ArrayList zu Zeichenfolge in Java (Personal)
Ich habe versucht, in Java von einer Zeichenfolge in einen LocalDate-Typ zu konvertieren
Konvertieren Sie ein potenziell null-Array in einen Stream