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();
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);
¿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
Copia manual de array
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