Liste in Array verwandeln

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen

Generische Liste in Array des generischen Typs verwandeln

Nehmen wir an, wir hätten eine generische Liste mit Punkten (Point). Die Liste möchten wir nun in ein Point-Array verwandeln.

In der Java-API vom Interface List sind zwei Methoden zum Umwandeln dokumentiert.

Object[] toArray

Diese Methode erzeugt aus einer Liste (die auch typsicher sein kann) ein Array aus Objekten. Das Problem dabei ist, dass nicht klar ist, von welchem Typ die Objekte in der Liste sind. Wir verlieren den Zugriff auf die Methoden des Datentyps. Entweder müssen wir jedes Objekt der Liste weiter zum passenden Typ casten, oder geben uns mit den Methoden, die Object bereit stellt zufrieden.

import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
import java.awt.Point;

public class ListToArray {
    public static void main(String[] args) {
	List<Point> pList = new ArrayList<>();
        pList.add(new Point(100, 10));
        pList.add(new Point(200, 0));
        pList.add(new Point(150, 300));

        Object[] pArr = pList.toArray();

	System.out.println(Arrays.toString(pArr));
    }
}

<T> T[] toArray(T[] a)

Die Methode sieht auf den ersten Blick ziemlich kryptisch aus, sie gibt aber ein Array des Datentyps zurück, der in der Liste gespeichert wurde. Dadurch sind die Daten der Liste sofort und ohne umständliche und unsichere Typumwandlung weiter benutzbar.

Wie typsichere Listen nun in Arrays vom Typ des in der Liste gespeicherten Datentyps umgewandelt werden, zeigen wir nun.

import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
import java.awt.Point;

public class ListToArray {
    public static void main(String[] args) {
	List<Point> pList = new ArrayList<>();
        pList.add(new Point(100, 10));
        pList.add(new Point(200, 0));
        pList.add(new Point(150, 300));

        Point[] pArr = pList.toArray(new Point[pList.size()]);

	System.out.println(Arrays.toString(pArr));
    }
}


Fragen

Das Thema wurde nicht ausreichend behandelt? Du hast Fragen dazu und brauchst weitere Informationen? Lass Dir von uns helfen!

Wir helfen dir gerne!


Dir hat dieser Artikel gefallen? Oder Du hast Fehler entdeckt und möchtest zur Berichtigung beitragen? Prima! Schreibe einen Kommentar!

Du musst angemeldet sein, um einen Kommentar abzugeben.