Collectors.flatMapping()
Usa flatMapping() para aplanar dentro de un collector de agrupación.
Comparación de Código
✕ Java 8
// Flatten within a grouping collector
// Required complex custom collector
Map<String, Set<String>> tagsByDept =
// no clean way in Java 8
✓ Java 9+
var tagsByDept = employees.stream()
.collect(groupingBy(
Emp::dept,
flatMapping(
e -> e.tags().stream(),
toSet()
)
));
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Componible
Funciona como collector descendente dentro de groupingBy.
Una sola pasada
Aplana y agrupa en un único recorrido del stream.
Anidable
Se combina con otros collectors descendentes.
Enfoque Antiguo
flatMap anidado
Enfoque Moderno
flatMapping()
Desde JDK
9
Dificultad
Intermedio
Soporte JDK
Collectors.flatMapping()
Disponible
Ampliamente disponible desde JDK 9 (sept. 2017)
Cómo funciona
Collectors.flatMapping() aplica un mapeo de uno a muchos como un collector descendente. Es el equivalente en collectors de Stream.flatMap() — útil dentro de groupingBy o partitioningBy.
Documentación Relacionada