Collections Principiante

Converti gli stream in array tipizzati con un riferimento a metodo.

✕ 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);
Vedi un problema con questo codice? Faccelo sapere.
🎯

Type-safe

Nessun cast a Object[] — il tipo dell'array è corretto.

🔗

Concatenabile

Funziona alla fine di qualsiasi pipeline stream.

📏

Conciso

Un'espressione sostituisce il loop manuale.

Approccio Vecchio
Filtraggio manuale + copia
Approccio Moderno
toArray(generatore)
Dal JDK
8
Difficoltà
Principiante
Stream toArray tipizzato
Disponibile

Ampiamente disponibile dal JDK 8 (marzo 2014)

Il metodo toArray(IntFunction) crea un array correttamente tipizzato da uno stream. Il generatore (String[]::new) indica allo stream quale tipo di array creare.