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()

今後の学習の道しるべ

  1. filter()map()使い分けに慣れる
  2. OptionalflatMapなど応用的な操作もチェック!
  3. 並列処理(parallelStream())にも挑戦!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。