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.