toArray tipado en streams
Convierte streams en arrays tipados con una referencia a método.
Comparación 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);
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Tipado seguro
Sin cast a Object[] — el tipo del array es correcto.
Encadenable
Funciona al final de cualquier pipeline de stream.
Conciso
Una sola expresión reemplaza el bucle manual.
Enfoque Antiguo
Filtro manual + copia
Enfoque Moderno
toArray(generator)
Desde JDK
8
Dificultad
Principiante
Soporte JDK
toArray tipado en streams
Disponible
Ampliamente disponible desde JDK 8 (marzo 2014)
Cómo funciona
El método toArray(IntFunction) crea un array correctamente tipado a partir de un stream. El generador (String[]::new) indica al stream qué tipo de array crear.
Documentación Relacionada
Prueba