Stream toArray tipizzato
Converti gli stream in array tipizzati con un riferimento a metodo.
Confronto Codice
✕ 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.
Perché vince l'approccio moderno
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
Supporto JDK
Stream toArray tipizzato
Disponibile
Ampiamente disponibile dal JDK 8 (marzo 2014)
Come funziona
Il metodo toArray(IntFunction) crea un array correttamente tipizzato da uno stream. Il generatore (String[]::new) indica allo stream quale tipo di array creare.
Documentazione Correlata
Prova