1. ホーム

[解決済み】述語でストリームを制限する

2022-04-17 18:28:41

質問

Java 8 のストリーム操作で、無限大になる可能性のある Stream 最初の要素が述語にマッチしなくなるまで?

Java 9 では takeWhile のように、10未満の数字をすべて表示させることができます。

IntStream
    .iterate(1, n -> n + 1)
    .takeWhile(n -> n < 10)
    .forEach(System.out::println);

Java8ではそのような操作はないので、一般的な方法で実装するにはどうしたらよいでしょうか。

どのように解決するのですか?

操作方法 takeWhiledropWhile は、JDK 9 で追加されました。 あなたのサンプルコード

IntStream
    .iterate(1, n -> n + 1)
    .takeWhile(n -> n < 10)
    .forEach(System.out::println);

は、JDK 9 でコンパイルして実行すると、期待どおりの動作をします。

JDK9がリリースされました。こちらからダウンロードできます。 JDK 9 リリース .