前回までの解説で、ストリームの主要なメソッドを解説しました。今まで紹介した6種類のメソッドを使用することで、ストリームを使用する多くの処理を記述できるはずです。今回は、以下に示す中間操作のメソッドについて解説します。

  • limit
  • distinct
  • skip
  • sorted

 limitメソッドはストリームの要素数を制限するためのメソッドで、distinctメソッドは重複を排除するためのメソッドとなります。skipメソッドはストリームの先頭から要素をスキップするためのメソッドです。最後のsortedメソッドはその名の通り、ストリームの要素をソートするためのメソッドとなります。順に紹介します。

limit

 limitメソッドはストリームの要素数を制限するためのメソッドです。引数は制限する要素数となり、引数の型はlongです。

 第5回 Stream API その1で、ストリームの生成にiterateメソッドもしくはgenerateメソッドを紹介したときにlimitメソッドに触れたように、主に無限ストリームを有限個のストリームに変換するときに使用します。

 例えば、0から始まる要素数が10の偶数のストリームを生成するには次のように行います。

リスト1 要素数が10の0から始まる偶数のストリームの生成

    IntStream stream = IntStream.iterate(0, n -> n + 2)
                                .limit(10L);

 赤字で示したように、10を引数にしてlimitメソッドをコールすることで、要素数が10のストリームになります。つまり、0,2,4,...18からなるストリームとなります。