前回からProject Lambdaで策定されたAPIの紹介を行ってきました。

 今回はStream APIを用いた処理について紹介していきます。

 前回、ストリームは処理を連ねて記述し、それをパイプラインと呼ぶと解説しました。そして、パイプラインの中で最後の処理を終端操作、それ以外を中間操作と呼びます。

 中間操作は複数を連ねることができますが、終端操作はパイプラインで1つだけです。また、終端操作後のストリームは再利用することができません。

 ストリームは処理を効率化するため、中間操作の処理は、終端操作時にまとめて行われます。

 主な中間操作を表1に、終端操作を表2に示しました。

表1 主な中間操作
メソッド名 概要
filter 条件に合致した要素を残す
map 写像。各要素に処理を施して、他の値へ変換する
flatMap mapの一種。ストリームを返す写像を平坦化する
distinct 同一要素を削除する
sorted ソート
limit 要素数を制限する
skip 要素を読み飛ばす

 

表2 主な終端操作
メソッド名 概要
forEach 各要素に対して処理を施す
reduce 前回値と今回値を用いた集約処理
collect 汎用的な集約処理
allMatch/anyMatch/noneMatch 要素が条件に合致するかを調べる
findFirst 始めの要素を返す
findAny 順番の保証のないストリームで始めに見つけた要素を返す
min/max 最小値、最大値を返す
count 要素数を返す
toArray ストリームを配列に変換する

 これらのメソッド以外に、各ストリームにもメソッドが定義されています。たとえば、プリミティブ型に対応したストリームはいずれも数値を扱うので、平均を求めるaverageメソッドが定義されています。