Collectors no modificables
Recolecta directamente en una lista no modificable con stream.toList().
Comparación de Código
✕ Java 8
List<String> list = stream.collect(
Collectors.collectingAndThen(
Collectors.toList(),
Collections::unmodifiableList
)
);
✓ Java 16+
List<String> list = stream.toList();
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Lo más breve posible
stream.toList() no necesita collect() ni importar Collectors.
Inmutable
El resultado no puede modificarse — sin mutaciones accidentales.
Legible
Se lee de forma natural como paso terminal de cualquier pipeline de stream.
Enfoque Antiguo
collectingAndThen
Enfoque Moderno
stream.toList()
Desde JDK
16
Dificultad
Intermedio
Soporte JDK
Collectors no modificables
Disponible
Ampliamente disponible desde JDK 16 (marzo 2021)
Cómo funciona
Java 10 añadió toUnmodifiableList(), toUnmodifiableSet() y toUnmodifiableMap() para reemplazar el verboso envoltorio collectingAndThen. Para listas específicamente, stream.toList() de Java 16 ofrece una alternativa aún más simple — sin llamada a collect() en absoluto. Usa toUnmodifiableSet() y toUnmodifiableMap() para otros tipos de colecciones.
Documentación Relacionada