[JavaGold対策]紫本3章 JavaストリームAPI

  • java.util.streamパッケージのこと。データをパイプラインで処理する。
  • ストリームパイプラインを構成して処理を行う

ストリームパイプラインの要素

  • データソースからストリームを形成
  • 上に続く0個以上の中間操作(遅延操作!終端操作が実行されるまで実際には実行されない)
  • パイプラインの最後で1つの終端操作
  • 終端操作によって処理が適用される。終端処理を記述しないとストリームの処理は実行されない(コンパイルエラーにはならない)

ストリームの生成

  • インターフェースやクラスで提供される

ストリームの中間操作

  • 中間操作のメソッドも提供されている。多くは関数型インターフェースを引数に受け取る

要素のフィルタ

  • filter()はストリームの全ての要素を調べてtrueの要素を返す
  • dropWhile()は最初にfalseが現れた以降の要素を返す
  • takeWhile()は先頭から連続してtrueの間の要素を返す

ストリームの終端操作

  • java.util.OptionalクラスはTをラップするコンテナオブジェクトとして使用する
  • nullチェックのボイラープレートコードなしでもヌルポを避けることができる

終端操作のメソッド

主に以下の目的でメソッドを使用する

  • 要素の探索: findAny(),findFirst(),allMatch()など、ショートサーキットな終端操作であり、結果が確定すると処理を終了する
  • 要素の集計: count(),max(),min()など
  • 要素の蓄積: toList(),toArray()
  • 要素のリダクション: reduce(),collect()、リダクションとはストリームの要素を一つに集約する処理。広義では上2つもリダクション

可変リダクション操作

Collector<T,A,R>インターフェースとCollectorクラス

  • Collect()は可変リダクションを行うメソッド、ストリーム要素を可変コンテナに蓄積して処理を行った結果を返す

2026-05-03 22:18