Streams Intermediário

Use flatMapping() para achatar elementos dentro de um collector de agrupamento.

✕ 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()
        )
    ));
Viu um problema com este código? Nos avise.
🧩

Componível

Funciona como collector downstream dentro de groupingBy.

📐

Passagem única

Achata e agrupa em uma única travessia do stream.

🔗

Aninhável

Combine com outros collectors downstream.

Abordagem Antiga
flatMap aninhado
Abordagem Moderna
flatMapping()
Desde o JDK
9
Dificuldade
Intermediário
Collectors.flatMapping()
Disponível

Amplamente disponível desde o JDK 9 (setembro de 2017)

Collectors.flatMapping() aplica um mapeamento de um-para-muitos como um collector downstream. É o equivalente em collector do Stream.flatMap() — útil dentro de groupingBy ou partitioningBy.

Compartilhar 𝕏 🦋 in