Stream toArray tipizzato
Converti gli stream in array tipizzati con un riferimento a metodo.
Confronto Codice
✕ 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);
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
Copia manuale dell'array
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