カテゴリ: Java 更新日: 2026/03/31

JavaのStreamのcollectを完全解説!初心者でもわかるデータ収集方法

Streamのcollectメソッド
Streamのcollectメソッド

先生と生徒の会話形式で理解しよう

生徒

「先生、JavaのStreamで処理結果をリストやセットにまとめたいときはどうすればいいですか?」

先生

「その場合はcollectメソッドを使うと便利です。Streamの要素を一気にコレクションに集められます。」

生徒

「collectとtoArrayやreduceとはどう違うんですか?」

先生

「toArrayは配列に変換するだけで、reduceは一つの値に集約します。collectはコレクションにまとめるためのメソッドで、リストやセット、マップに格納するのに向いています。」

1. collectとは何か?

「1. collectとは何か?」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

1. collectとは何か?
1. collectとは何か?

JavaのStreamのcollectメソッドは、ストリームの要素をリストやセット、マップなどのコレクションに集めるための終端操作です。集約や加工を行った後に、データを扱いやすい形式にまとめたいときに使います。従来のループでコレクションに追加していく手順を、collectを使うと一行で書けるので、初心者でも簡単に理解できます。Stream処理の最後に結果を収集するため、プログラムの読みやすさも向上します。

2. collectの基本構文

2. collectの基本構文
2. collectの基本構文

collectメソッドは、Collectorsクラスと組み合わせて使います。Collectors.toList()やCollectors.toSet()を渡すことで、ストリームの要素をリストやセットに変換できます。初心者はまずtoList()から覚えると理解が早いです。collectは終端操作なので、処理結果を取得したら再度同じストリームを使うことはできません。この点に注意しながら使うと安全です。

3. リストに変換する例

3. リストに変換する例
3. リストに変換する例

Streamの要素をリストに変換する基本例です。


import java.util.List;
import java.util.stream.Collectors;

public class CollectToListExample {
    public static void main(String[] args) {
        List<String> fruits = List.of("りんご", "みかん", "バナナ", "ぶどう");
        List<String> fruitList = fruits.stream()
                                           .collect(Collectors.toList());
        fruitList.forEach(System.out::println);
    }
}

りんご
みかん
バナナ
ぶどう

4. セットに変換する例

「4. セットに変換する例」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. セットに変換する例
4. セットに変換する例

重複を除きたい場合はSetに変換します。Setに変換すると同じ要素は一度だけ保持されます。


import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

public class CollectToSetExample {
    public static void main(String[] args) {
        List<String> fruits = List.of("りんご", "みかん", "バナナ", "りんご");
        Set<String> fruitSet = fruits.stream()
                                         .collect(Collectors.toSet());
        fruitSet.forEach(System.out::println);
    }
}

みかん
バナナ
りんご

5. collectの応用例

5. collectの応用例
5. collectの応用例

collectはフィルタやマップと組み合わせると便利です。例えば条件に合致する要素だけを抽出してリストにまとめることができます。これにより、特定の条件のデータを効率的に取得できます。初心者でも、Streamとcollectを組み合わせれば、簡潔で読みやすいコードを書くことができます。


import java.util.List;
import java.util.stream.Collectors;

public class FilterCollectExample {
    public static void main(String[] args) {
        List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6);
        List<Integer> evenNumbers = numbers.stream()
                                               .filter(n -> n % 2 == 0)
                                               .collect(Collectors.toList());
        evenNumbers.forEach(System.out::println);
    }
}

2
4
6

6. マップに変換する例

6. マップに変換する例
6. マップに変換する例

collectを使えばStreamの要素をマップにまとめることも可能です。例えば、文字列の長さをキーにして、文字列を値として格納できます。複雑なデータ構造を扱う場合にも便利です。


import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class CollectToMapExample {
    public static void main(String[] args) {
        List<String> fruits = List.of("りんご", "みかん", "バナナ");
        Map<String, Integer> fruitMap = fruits.stream()
                                                   .collect(Collectors.toMap(f -> f, f -> f.length()));
        fruitMap.forEach((k, v) -> System.out.println(k + " : " + v));
    }
}

りんご : 3
みかん : 3
バナナ : 3

7. 注意点とコツ

「7. 注意点とコツ」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. 注意点とコツ
7. 注意点とコツ

collectは終端操作なので、一度ストリームで使用すると再利用できません。また、Collectors.toMapを使う場合は、キーが重複すると例外が発生するため注意が必要です。ラムダ式やフィルタ、マップと組み合わせることで柔軟にデータを集約できるため、初心者でも段階的に理解しやすくなります。Streamの流れを意識しながらcollectを活用すると、コードが短く読みやすくなります。

カテゴリの一覧へ
新着記事
New1
Java
JavaのExceptionクラスを完全解説!初心者でも理解できる例外処理の基本
更新記事
New2
Thymeleaf
Thymeleafのth:classappend属性の使い方を完全ガイド!初心者でもわかる動的クラス追加
更新記事
New3
Java
Javaのカプセル化を完全ガイド!初心者でもわかるデータの保護と制御の使い方
更新記事
New4
Servlet
サーブレットでレスポンスを返す方法とは?PrintWriter・JSON・HTMLを初心者向けに解説!
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
No.3
Java&Spring記事人気No3
Java
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法
No.4
Java&Spring記事人気No4
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.5
Java&Spring記事人気No5
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.6
Java&Spring記事人気No6
Spring
Spring BootのJakarta移行ガイド!初心者向けjavax→jakarta変更ポイント徹底解説
No.7
Java&Spring記事人気No7
Thymeleaf
Thymeleafのth:checkedの使い方!チェックボックスON/OFFを動的に制御する方法
No.8
Java&Spring記事人気No8
Java
Java開発環境「Eclipse(Pleiades)」のインストール方法とメリットを初心者向けに解説