Java 9 改良された Stream API
Java 9 で改良された Stream API には、ストリーム処理をより簡単にし、コレクタを使用して複雑なクエリを記述できるようにする便利なメソッドがいくつか追加されています。
Java 9 は Stream にいくつかのメソッド(dropWhile、takeWhile、ofNullable)を追加し、iterate メソッドには新しいオーバーロードメソッドを追加しました。
takeWhile メソッド
構文
default Stream<T> takeWhile(Predicate<? super T> predicate)
takeWhile() メソッドは、述語を引数として使用し、述語ステートメントが最初に false を返すまで、指定された Stream のサブセットを返します。最初の値が述語条件を満たさない場合は、空の Stream を返します。
takeWhile() メソッドは、順序付けられた Stream では、先頭からできるだけ多くの要素を返します。順序付けられていない Stream では、先頭から Predicate 条件を満たす要素のサブセットを返します。
例
上記の例では、takeWhile メソッドは空の文字列に遭遇するとループ出力を停止します。実行結果は次のとおりです。
abc
dropWhile メソッド
構文
default Stream<T> dropWhile(Predicate<? super T> predicate)
dropWhile メソッドは takeWhile と逆の働きをします。述語を引数として使用し、述語ステートメントが最初に false を返すまで、指定された Stream のサブセットを返しません。
例
上記の例では、dropWhile メソッドは空の文字列に遭遇するとループ出力を開始します。実行結果は次のとおりです。
ef
iterate メソッド
構文
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
このメソッドは、初期シード値を使用して順次(場合によっては無限の)ストリームを作成し、指定された next メソッドを反復適用することができます。指定された hasNext の述語が false を返すと、反復が停止します。
例
実行結果は次のとおりです。
3 6 9
ofNullable メソッド
構文
static <T> Stream<T> ofNullable(T t)
ofNullable メソッドは NullPointerExceptions を防ぐことができ、ストリームをチェックすることで null 値を回避できます。
指定された要素が null でない場合は、その要素を取得して単一要素のストリームを生成します。要素が null の場合は空のストリームを返します。
例
実行結果は次のとおりです。
1 0その他の拡張機能
Java 9 の新機能