toArray tipado com streams
Converta streams em arrays tipados com uma referência de método.
Comparação de Código
✕ 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);
Viu um problema com este código? Nos avise.
Por que a forma moderna ganha
Tipo seguro
Sem cast de Object[] — o tipo do array está correto.
Encadeável
Funciona no final de qualquer pipeline de stream.
Conciso
Uma expressão substitui o loop manual.
Abordagem Antiga
Filtro manual + cópia
Abordagem Moderna
toArray(generator)
Desde o JDK
8
Dificuldade
Iniciante
Suporte JDK
toArray tipado com streams
Disponível
Amplamente disponível desde o JDK 8 (março de 2014)
Como funciona
O método toArray(IntFunction) cria um array com tipo correto a partir de um stream. O gerador (String[]::new) indica ao stream qual tipo de array criar.
Documentação Relacionada
Prova