前回はストリームから離れて、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メソッドを使用しました。