前回はストリームから離れて、java.util.Optionalクラスを紹介しました。Optionalクラスを使用すると、今までnullチェックを書いていた箇所を書き換えることが可能になります。
今回は、再びストリームに戻って、ストリームのメソッドのうちOptionalクラスを使用しているものを紹介していきます。
ストリームのメソッドでOptionalクラスを使用しているのは次の5つのメソッドです。
- findFirst
- findAny
- max
- min
- reduce
いずれも終端処理で、戻り値の型がOptionalクラスとなっています。
以下、順々に紹介していきます。
findFirst/findAny
findFirstメソッドもfindAnyメソッドもストリームの要素を返すメソッドです。いずれも、引数はありません。
findFirstメソッドはストリームの先頭の要素を返します。
たとえば、次のコードでは0が出力されます。
リスト1 findFirstメソッドの使用例
OptionalInt op = IntStream.range(0, 100)
.findFirst();
op.ifPresent(x -> System.out.println(x));
0から99までのストリームに対して、赤字で示したfindFirstメソッドをコールして先頭要素を取得します。戻り値はOptionalオブジェクトになっているので、値を出力するためにifPresentメソッドを使用しました。