Wie kann man eine ArrayList in ein Array wandeln?

Die Methode List#toArray() erlaubt die Überführung des Inhaltes einer List in ein Array des entsprechenden Typs.

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.