Wie kann ich eine ArrayList<String>
Objekt zu einem String[]
Array in Java?
Antworten
Zu viele Anzeigen? List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
String [] strArry= list.stream().toArray(size -> new String[size]);
Gemäß den Kommentaren habe ich einen Absatz hinzugefügt, um zu erklären, wie die Konvertierung funktioniert. Zuerst wird die Liste in einen String-Stream konvertiert. Dann wird Stream.toArray verwendet, um die Elemente im Stream in ein Array zu konvertieren. In der letzten Anweisung oben ist "size -> new String[size]" eigentlich eine IntFunction-Funktion, die ein String-Array mit der Größe des String-Streams zuweist. Die Anweisung ist identisch mit
IntFunction<String []> allocateFunc = size -> {
return new String[size];
};
String [] strArry= list.stream().toArray(allocateFunc);
Für den Fall, dass eine zusätzliche Manipulation der Daten gewünscht ist, für die der Benutzer eine Funktion wünscht, ist dieser Ansatz nicht perfekt (da er die Übergabe der Klasse des Elements als zweiten Parameter erfordert), aber er funktioniert:
import java.util.ArrayList; import java.lang.reflect.Array;
public class Test {
public static void main(String[] args) {
ArrayList<Integer> al = new ArrayList<>();
al.add(1);
al.add(2);
Integer[] arr = convert(al, Integer.class);
for (int i=0; i<arr.length; i++)
System.out.println(arr[i]);
}
public static <T> T[] convert(ArrayList<T> al, Class clazz) {
return (T[]) al.toArray((T[])Array.newInstance(clazz, al.size()));
}
}
Mit dieser Methode können Sie eine Liste in ein String-Array umwandeln:
Object[] stringlist=list.toArray();
Das vollständige Beispiel:
ArrayList<String> list=new ArrayList<>();
list.add("Abc");
list.add("xyz");
Object[] stringlist=list.toArray();
for(int i = 0; i < stringlist.length ; i++)
{
Log.wtf("list data:",(String)stringlist[i]);
}