Typisiertes Stream-toArray
Streams mit einer Methodenreferenz in typisierte Arrays umwandeln.
Code-Vergleich
✕ Pre-Streams
List<String> list = getNames();
String[] arr = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
arr[i] = list.get(i);
}
✓ Java 8+
String[] arr = getNames().stream()
.filter(n -> n.length() > 3)
.toArray(String[]::new);
Problem mit diesem Code entdeckt? Sag uns Bescheid.
Warum der moderne Weg gewinnt
Typsicher
Kein Object[]-Cast — der Array-Typ ist korrekt.
Verkettbar
Funktioniert am Ende jeder Stream-Pipeline.
Prägnant
Ein einziger Ausdruck ersetzt die manuelle Schleife.
Alter Ansatz
Manuelle Array-Kopie
Moderner Ansatz
toArray(generator)
Seit JDK
8
Schwierigkeitsgrad
Einsteiger
JDK-Unterstützung
Typisiertes Stream-toArray
Verfügbar
Weitgehend verfügbar seit JDK 8 (März 2014)
Wie es funktioniert
Die Methode toArray(IntFunction) erstellt ein korrekt typisiertes Array aus einem Stream. Der Generator (String[]::new) teilt dem Stream mit, welchen Array-Typ er erstellen soll.
Zugehörige Dokumentation