4097 Stimmen

ArrayList aus Array erstellen

Ich habe ein Array, das wie initialisiert wird:

Element[] array = {new Element(1), new Element(2), new Element(3)};

Ich möchte dieses Array in ein Objekt des Typs ArrayList Klasse.

ArrayList<Element> arraylist = ???;

59 Stimmen

In Java9 --> List<String> list = List.of("Hallo", "Welt", "von", "Java");

32 Stimmen

@MarekM Diese Antwort ist falsch, denn sie gibt keine ArrayList . Das Poster hat ausdrücklich darum gebeten.

7 Stimmen

Ich denke, dass er die Listenschnittstelle nicht verwendet hat, weil dies die beste Praxis ist. Aber wenn Sie wollen, hier ist - neue ArrayList<>(List.of("Hallo", "World", "von", "Java"));

9voto

Hemin Punkte 684

Am einfachsten ist es, wenn Sie den folgenden Code hinzufügen. Erprobt und getestet.

String[] Array1={"one","two","three"};
ArrayList<String> s1= new ArrayList<String>(Arrays.asList(Array1));

9voto

Adit A. Pillai Punkte 627

In Java 8 können Sie dies wie folgt tun

ArrayList<Element> list = (ArrayList<Element>)Arrays.stream(array).collect(Collectors.toList());

2 Stimmen

Downvoted, weil das Cast sieht sehr gefährlich. nichts spezifiziert, dass der Typ der Liste, die zurückgegeben wird, ist tatsächlich ein ArrayList, wie die Javadoc Staaten: "Es gibt keine Garantien für den Typ, die Veränderbarkeit, die Serialisierbarkeit oder die Thread-Sicherheit der zurückgegebenen Liste".

1 Stimmen

Wenn Sie explizit eine ArrayList erstellen möchten, versuchen Sie dies: ArrayList<String> list = Arrays.stream(array).collect(Collectors.toCollection(ArrayLi‌​st::new));

9voto

Toothless Seer Punkte 768

Eine weitere Java8-Lösung (Vielleicht habe ich die Antwort in der großen Menge übersehen, dann bitte ich um Entschuldigung). Dies erzeugt eine ArrayList (im Gegensatz zu einer List), d.h. man kann Elemente löschen

package package org.something.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Junk {

    static <T> ArrayList<T>  arrToArrayList(T[] arr){
        return Arrays.asList(arr)
            .stream()
            .collect(Collectors.toCollection(ArrayList::new));
    }

    public static void main(String[] args) {
        String[] sArr = new String[]{"Hello", "cruel", "world"};
        List<String> ret = arrToArrayList(sArr);
        // Verify one can remove an item and print list to verify so
        ret.remove(1);
        ret.stream()
            .forEach(System.out::println);
    }
}

Die Ausgabe ist...
Hallo
Welt

9voto

Devendra Lattu Punkte 2638

Auch wenn es viele perfekt geschriebene Antworten auf diese Frage gibt, werde ich meine Beiträge hinzufügen.

Sagen wir, Sie haben Element[] array = { new Element(1), new Element(2), new Element(3) };

Eine neue ArrayList kann auf folgende Weise erstellt werden

ArrayList<Element> arraylist_1 = new ArrayList<>(Arrays.asList(array));
ArrayList<Element> arraylist_2 = new ArrayList<>(
    Arrays.asList(new Element[] { new Element(1), new Element(2), new Element(3) }));

// Add through a collection
ArrayList<Element> arraylist_3 = new ArrayList<>();
Collections.addAll(arraylist_3, array);

Und sie unterstützen sehr gut alle Operationen von ArrayList

arraylist_1.add(new Element(4)); // or remove(): Success
arraylist_2.add(new Element(4)); // or remove(): Success
arraylist_3.add(new Element(4)); // or remove(): Success

Aber die folgenden Operationen gibt nur eine Liste Ansicht eines ArrayList und nicht tatsächlich ArrayList.

// Returns a List view of array and not actual ArrayList
List<Element> listView_1 = (List<Element>) Arrays.asList(array);
List<Element> listView_2 = Arrays.asList(array);
List<Element> listView_3 = Arrays.asList(new Element(1), new Element(2), new Element(3));

Daher werden sie einen Fehler anzeigen, wenn sie versuchen, einige ArrayList-Operationen durchzuführen

listView_1.add(new Element(4)); // Error
listView_2.add(new Element(4)); // Error
listView_3.add(new Element(4)); // Error

Mehr zur Listendarstellung von Arrays Link .

9voto

rashedcs Punkte 3145

Wir können ein Array ganz einfach umwandeln in ArrayList . Wir verwenden die Schnittstelle von Collection addAll() Methode, um Inhalte von einer Liste in eine andere zu kopieren.

 Arraylist arr = new Arraylist();
 arr.addAll(Arrays.asList(asset));

0 Stimmen

Dies ist weniger effizient als die akzeptierte 9 Jahre alte Antwort.

3 Stimmen

Einer der ArrayList s-Konstruktoren akzeptiert eine ? extends Collection<T> Argument, wodurch der Aufruf von addAll überflüssig.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X