Collectors.flatMapping()
flatMapping() zum Abflachen innerhalb eines Gruppierungs-Collectors verwenden.
Code-Vergleich
✕ 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.
Warum der moderne Weg gewinnt
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
JDK-Unterstützung
Collectors.flatMapping()
Verfügbar
Weitgehend verfügbar seit JDK 9 (Sept. 2017)
Wie es funktioniert
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.
Zugehörige Dokumentation