Streams 中級

flatMapping()を使ってグルーピングコレクター内でフラット化する。

✕ 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()
        )
    ));
このコードに問題がありますか? お知らせください。
🧩

組み合わせ可能

groupingBy内の下流コレクターとして動作します。

📐

シングルパス

単一のストリームトラバーサルでフラット化とグルーピングを実現します。

🔗

ネスト可能

他の下流コレクターと組み合わせられます。

旧来のアプローチ
ネストされたflatMap
モダンなアプローチ
flatMapping()
JDKバージョン
9
難易度
中級
Collectors.flatMapping()
利用可能

JDK 9(2017年9月)以降、広く利用可能

Collectors.flatMapping()は下流コレクターとして1対多マッピングを適用します。Stream.flatMap()のコレクター版で、groupingByやpartitioningByの内部で役立ちます。

共有 𝕏 🦋 in