Typisiertes Stream-toArray
Streams mit einer Methodenreferenz in typisierte Arrays umwandeln.
Code-Vergleich
✕ Pre-Streams
List<String> list = getNames();
List<String> filtered = new ArrayList<>();
for (String n : list) {
if (n.length() > 3) {
filtered.add(n);
}
}
String[] arr = filtered.toArray(new String[0]);
✓ 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 Filterung + 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
Beweis