Collections Einsteiger

Streams mit einer Methodenreferenz in typisierte Arrays umwandeln.

✕ 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.
🎯

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
Typisiertes Stream-toArray
Verfügbar

Weitgehend verfügbar seit JDK 8 (März 2014)

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.

Teilen 𝕏 🦋 in