Sobes.tech
Junior — Middle

Si llamo al método toList() en un Stream, ¿el resultado será un ArrayList u otro tipo de colección?

sobes.tech AI

Respuesta de la IA

El método toList() en la interfaz Stream (a partir de Java 16) devuelve una lista inmutable, pero no se garantiza un tipo específico de colección y no necesariamente es ArrayList. A diferencia de collect(Collectors.toList()), que generalmente devuelve un ArrayList, Stream.toList() puede devolver otro tipo de lista, optimizado para la implementación concreta.

Ejemplo:

List<String> list = Stream.of("a", "b", "c").toList();
// La lista es inmutable, intentar modificarla provocará UnsupportedOperationException

Por lo tanto, no se puede confiar en que el resultado sea exactamente un ArrayList. Si se necesita específicamente un ArrayList, es mejor usar collect(Collectors.toList()).