Java | 「Stream構文早見表(map/filter/groupingBy/sorted)」図解版

Java Java
スポンサーリンク

ここでは、Stream API の主要構文(map / filter / sorted / groupingBy など)を図解で理解できる早見表を作ります。
「操作の意味」「処理の流れ」「例」を視覚的に整理しました。


Stream API 図解早見表

Collection/Array
       │
       ▼
   stream()  ──▶ Stream開始
       │
       ▼
  ┌─────────────┐
  │  中間操作              │  (元データは変わらない)
  │  filter()             │ 条件で要素を絞り込む
  │  map()                │ 要素を別の形に変換
  │  distinct()           │ 重複を除去
  │  sorted()             │ 並び替え
  │  limit()/skip()       │ 件数制限/スキップ
  │  flatMap()            │ ネストをフラット化
  └─────────────┘
       │
       ▼
  ┌─────────────────────┐
  │  終端操作                            │  (ここで処理が実行される)
  │  collect()                          │ リストやマップに変換
  │  forEach()                          │ 各要素に副作用処理
  │  count()                            │ 件数を取得
  │  findFirst()                        │ 先頭要素を取得
  │  anyMatch()/allMatch()/noneMatch()  │ 条件判定
  └─────────────────────┘

操作例と流れ

1️⃣ filter():条件で絞り込み

list.stream()
    .filter(s -> s.startsWith("A"))
    .collect(Collectors.toList());
Java
  • 意味:Aで始まる要素だけ残す
  • 図イメージ
[Apple, Banana, Avocado] 
        │ filter(s -> startsWith("A"))
        ▼
[Apple, Avocado]

2️⃣ map():要素を変換

list.stream()
    .map(String::toUpperCase)
    .collect(Collectors.toList());
Java
  • 意味:文字列を大文字に変換
  • 図イメージ
[apple, banana, cherry] 
        │ map(String::toUpperCase)
        ▼
[APPLE, BANANA, CHERRY]

3️⃣ sorted():並び替え

list.stream()
    .sorted()
    .collect(Collectors.toList());
Java
  • 意味:自然順序でソート
  • 図イメージ
[Charlie, Alice, Bob]
        │ sorted()
        ▼
[Alice, Bob, Charlie]

4️⃣ distinct():重複除去

list.stream()
    .distinct()
    .collect(Collectors.toList());
Java
  • 意味:重複した要素を1つにまとめる
  • 図イメージ
[Alice, Bob, Alice, Charlie]
        │ distinct()
        ▼
[Alice, Bob, Charlie]

5️⃣ limit() / skip():件数制御

list.stream()
    .skip(2)
    .limit(3)
    .collect(Collectors.toList());
Java
  • 意味:先頭2件スキップ → 次の3件を取得
  • 図イメージ
[1,2,3,4,5,6]
   │ skip(2)
   ▼
[3,4,5,6]
   │ limit(3)
   ▼
[3,4,5]

6️⃣ flatMap():ネストを平坦化

listOfLists.stream()
    .flatMap(List::stream)
    .collect(Collectors.toList());
Java
  • 意味:List<List> → List
  • 図イメージ
[[1,2], [3,4], [5]]
       │ flatMap()
       ▼
[1,2,3,4,5]

7️⃣ groupingBy():グループ化

Map<String, List<User>> grouped =
    users.stream()
         .collect(Collectors.groupingBy(User::getDept));
Java
  • 意味:部署ごとにユーザーを分類
  • 図イメージ
[User(A), User(B), User(C)]
       │ groupingBy(getDept)
       ▼
{ Dept1: [User(A), User(C)], Dept2: [User(B)] }

8️⃣ まとめ(黄金パターン)

list.stream()
    ──> filter()   // 条件で絞る
    ──> map()      // 変換する
    ──> sorted()   // 並び替える
    ──> distinct() // 重複除去
    ──> limit()/skip() // 件数調整
    ──> flatMap()  // ネスト平坦化
    ──> collect() / forEach() / count() ... // 終端操作で結果を取得
Java

💡 コツ

  • 中間操作は「元データは変えない」
  • 終端操作で初めて処理が実行される
  • パイプラインで左から右へ流れを考えると理解しやすい

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました