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 = ???;
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 = ???;
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".
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
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 .
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.
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"));
22 Stimmen
Es geht nicht um die Verwendung der Schnittstelle, sondern darum, dass in Ihrer Lösung die zurückgegebene Liste nicht veränderbar ist. Das könnte eher ein Problem sein, und ein Grund, warum er nach einer ArrayList fragte