前回からProject Lambdaで策定されたAPIの紹介を行ってきました。
今回はStream APIを用いた処理について紹介していきます。
前回、ストリームは処理を連ねて記述し、それをパイプラインと呼ぶと解説しました。そして、パイプラインの中で最後の処理を終端操作、それ以外を中間操作と呼びます。
中間操作は複数を連ねることができますが、終端操作はパイプラインで1つだけです。また、終端操作後のストリームは再利用することができません。
ストリームは処理を効率化するため、中間操作の処理は、終端操作時にまとめて行われます。
主な中間操作を表1に、終端操作を表2に示しました。
メソッド名 | 概要 |
---|---|
filter | 条件に合致した要素を残す |
map | 写像。各要素に処理を施して、他の値へ変換する |
flatMap | mapの一種。ストリームを返す写像を平坦化する |
distinct | 同一要素を削除する |
sorted | ソート |
limit | 要素数を制限する |
skip | 要素を読み飛ばす |
メソッド名 | 概要 |
---|---|
forEach | 各要素に対して処理を施す |
reduce | 前回値と今回値を用いた集約処理 |
collect | 汎用的な集約処理 |
allMatch/anyMatch/noneMatch | 要素が条件に合致するかを調べる |
findFirst | 始めの要素を返す |
findAny | 順番の保証のないストリームで始めに見つけた要素を返す |
min/max | 最小値、最大値を返す |
count | 要素数を返す |
toArray | ストリームを配列に変換する |
これらのメソッド以外に、各ストリームにもメソッドが定義されています。たとえば、プリミティブ型に対応したストリームはいずれも数値を扱うので、平均を求めるaverageメソッドが定義されています。