JavaのStream API入門:新人エンジニアのためのやさしい解説と活用術
こんにちは。ゆうせいです。
今回は、新人エンジニア向けにJavaのStream APIを丁寧に解説します。
「なんか便利そうだけど、よくわからない…」そんな気持ち、よくわかります!
難しそうに見えるStreamも、ポイントを押さえればとても直感的。
高校生でも理解できるように、例え話や図も交えながら進めていきますね!
Stream APIとは?どんな場面で使うの?
Java 8から追加されたStream API(ストリームエーピーアイ)は、コレクション(ListやSetなど)に対して、簡潔で柔軟なデータ処理ができる仕組みです。
例えるなら…
工場のベルトコンベアのようなもの!
- 入ってきたデータに対して
- 並べ替えたり、フィルターしたり、合計したり
- 最後にまとめて結果を取り出す
という「流れ作業」ができます。
基本の書き方
List<String> names = Arrays.asList("Yusei", "Taro", "Hanako");
List<String> result = names.stream()
.filter(name -> name.length() > 4)
.collect(Collectors.toList());
分解してみよう
| 処理 | 意味 |
|---|---|
.stream() | Streamを開始する |
.filter(...) | 条件でふるい分け(フィルター) |
.collect(...) | 結果をListなどの形にまとめる |
よく使う中間操作と終端操作
中間操作(途中でデータを変換)
| メソッド | 説明 |
|---|---|
filter(Predicate) | 条件に合う要素だけ残す |
map(Function) | 要素を変換する |
sorted() | 昇順に並び替え |
distinct() | 重複を取り除く |
limit(n) | 最初のn件だけ取得 |
skip(n) | 最初のn件を飛ばす |
終端操作(最終的にまとめる)
| メソッド | 説明 |
|---|---|
collect() | 結果をListなどにまとめる |
forEach() | 各要素に対して処理を実行 |
count() | 件数を数える |
anyMatch() | 条件に1つでも合えばtrue |
allMatch() | 全部が条件に合えばtrue |
noneMatch() | 1つも条件に合わなければtrue |
よくある例:数字のリストから偶数だけを取り出す
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> evens = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
結果:
[2, 4, 6]
これは、「偶数だけ通すフィルターをベルトコンベアの途中に置いた」イメージですね。
mapを使って値を変換
List<String> names = Arrays.asList("taro", "hanako");
List<String> upper = names.stream()
.map(String::toUpperCase)
.collect(Collectors.toList());
結果:
["TARO", "HANAKO"]
mapは「加工機」みたいなもの。入力された要素を好きな形に変えられます。
forEachで繰り返し処理
names.stream().forEach(name -> System.out.println("こんにちは、" + name + "さん!"));
1行で全要素に挨拶できる。とてもスッキリ!
Streamのメリットとデメリット
メリット
- コードが簡潔になる
- 可読性が高い(慣れれば)
- 関数型プログラミング的な考え方に近づける
デメリット
- 慣れるまで取っつきにくい
- 複雑な処理だとデバッグしづらい
まとめ:Stream APIは「流れ」を意識すれば簡単!
| 段階 | イメージ | 例 |
|---|---|---|
| 開始 | 入り口 | .stream() |
| 加工 | 中間操作 | .filter(), .map() |
| 取り出し | 終端操作 | .collect(), .forEach() |
今後の学習の道しるべ
filter()やmap()の使い分けに慣れるOptionalやflatMapなど応用的な操作もチェック!- 並列処理(
parallelStream())にも挑戦!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
山崎講師2025年10月27日重回帰分析はディープラーニングの「細胞」だった?"ご先祖様"と"最強の進化系"のつながりを徹底解剖
山崎講師2025年10月27日機械学習の"ご先祖様"?重回帰分析が今も最強の「基礎」である理由
山崎講師2025年10月27日ディープラーニングの「常識」を疑え!相関分析が“無力”に見える理由と、それでも使うべき本当の価値
山崎講師2025年10月27日相関分析は最強の「データスカウト」!機械学習の精度を上げる”相棒”の正体とは