第2章 ストリーム API の使い方 : 問題 2 : limit メソッド
問題 2
長い単語のうち最初の5個だけ求める処理を、ストリーム API を使って以下のように書いた。
words.stream() .filter(w -> w.length() > 12) .limit(5) .forEach(System.out::println);
この処理で、5番目の長い単語が見つかったらlimit
メソッドの前の中間操作が呼び出されないことを確認せよ
解答
■ 確認用のコード
words.stream() .filter(w -> { System.out.println("word is " + w); return w.length() > 12; }) .limit(5) .forEach(System.out::println);
確かに、5番目の長い単語が見つかったらfilter
メソッドは呼ばれていない。
ストリームのパイプラインは、後ろの処理から実行されているということですね。