Streams Fortgeschritten

flatMapping() zum Abflachen innerhalb eines Gruppierungs-Collectors verwenden.

✕ 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()
        )
    ));
Problem mit diesem Code entdeckt? Sag uns Bescheid.
🧩

Kombinierbar

Funktioniert als nachgelagerter Collector innerhalb von groupingBy.

📐

Einmaliger Durchlauf

Abflachen und Gruppieren in einem einzigen Stream-Durchlauf.

🔗

Verschachtelbar

Lässt sich mit anderen nachgelagerten Collectors kombinieren.

Alter Ansatz
Verschachteltes flatMap
Moderner Ansatz
flatMapping()
Seit JDK
9
Schwierigkeitsgrad
Fortgeschritten
Collectors.flatMapping()
Verfügbar

Weitgehend verfügbar seit JDK 9 (Sept. 2017)

Collectors.flatMapping() wendet eine Eins-zu-viele-Abbildung als nachgelagerten Collector an. Es ist das Collector-Äquivalent von Stream.flatMap() – nützlich innerhalb von groupingBy oder partitioningBy.

Teilen 𝕏 🦋 in