Collectors.flatMapping()
Usa flatMapping() per appiattire all'interno di un collector di raggruppamento.
Confronto Codice
✕ 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()
)
));
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Componibile
Funziona come collector downstream all'interno di groupingBy.
Un passaggio
Appiattisci e raggruppa in un'unica traversata dello stream.
Annidabile
Combina con altri collector downstream.
Approccio Vecchio
flatMap annidato
Approccio Moderno
flatMapping()
Dal JDK
9
Difficoltà
Intermedio
Supporto JDK
Collectors.flatMapping()
Disponibile
Ampiamente disponibile dal JDK 9 (settembre 2017)
Come funziona
Collectors.flatMapping() applica una mappatura uno-a-molti come collector downstream. È l'equivalente collector di Stream.flatMap() — utile all'interno di groupingBy o partitioningBy.
Documentazione Correlata