Wie kann man eine ArrayList in ein Array
wandeln?
Die Methode toArray() des Interfaces java.util.List
liefert ein Array, dessen Typ dem Inhalt der List
entspricht.
ArrayList ist ein generischer Datentyp. Ihr
Inhaltstyp wird vom Entwickler innerhalb von spitzen
Klammern festgelegt, parametrisiert. Allerdings erlaubt
Java aus Gründen der
Abwärtskompatibilität auch die Verwendung des
unparametrisierten rohen Typs (raw type). Die
Daten werden dann als Object gespeichert.
Bei Konvertierung in ein Array mittels toArray()
wird dann natürlich auch ein Object-Array
zurückgegeben.
ArrayList list = new ArrayList(); //... Object[] objArr = list.toArray();
Ist die List jedoch parametrisiert, muss
dies bei der Konvertierung in ein datengleiches Array
berücksichtigt werden. Hierzu wird der Methode ein
Array von entsprechender Länge als Parameter
übergeben.
ArrayList<String> list = new ArrayList<String>(); //... String[] strArr = list.toArray(new String[list.size()]);
Die Umwandlung ist auch per Stream möglich
String[] strArr = list.stream().toArray(String[]::new);
ArrayList mit gespeicherten Arrays
Insbesondere bei Datenbankabfragen mit unbekannter
Ergebnislänge werden die abgefragten Tupel
häufig als Arrays der Spalteneinträge in einer
ArrayList abgelegt. Soll eine solche
konvertiert werden, ist das Ergebnis ein
zweidimendioneles Array.
String[][] strArr = list.toArray(new String[list.size()][]);
Lauffähiger Quelltext
public class ListZuArray {
public static void main(String[] args) {
ArrayList<String> list = (ArrayList<String>) createList();
ArrayList<String[]> twoDimList = (ArrayList<String[]>) createTwoDimList();
// Convert ArrayList to Array
printArr(list.toArray(new String[list.size()]));
// Convert Stream of ArrayList to Array
printArr(list.stream().toArray(String[]::new));
// Convert ArrayList of Arrays to 2-dim. Array
printTwoDimArr(twoDimList.toArray(new String[twoDimList.size()][]));
}
private static List<String> createList() {
ArrayList<String> list = new ArrayList<String>();
list.add("Vincent");
list.add("Brough Superior");
list.add("Moto Morini");
list.add("Adler");
return list;
}
private static List<String[]> createTwoDimList() {
ArrayList<String[]> twoDimList = new ArrayList<String[]>();
twoDimList.add(new String[] { "Scott", "Matchless" });
twoDimList.add(new String[] { "Benelli", "Gilera", "Mondial" });
twoDimList.add(new String[] { "Horex", "Brennabor", "Excelsior", "Rabeneick" });
return twoDimList;
}
private static void printArr(String[] arr) {
for (String s : arr) {
System.out.println(s);
}
System.out.println();
}
private static void printTwoDimArr(String[][] arr) {
for (String[] str : arr) {
System.out.println(Arrays.toString(str));
for (String s : str) {
System.out.println(s);
}
System.out.println();
}
}
}
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.