ホームページ >Java >&#&チュートリアル >Java 9 の「takewhile」に相当する Java 8 をストリームに実装するにはどうすればよいですか?
Java 8 ストリーム: 述語による制限
無限のストリームが存在する可能性があるシナリオでは、最初のストリームまでストリームを制限する必要がよく発生します。要素は特定の述語に失敗します。 Java 9 では便利な takewhile 操作が導入され、この機能を簡単に有効にできました。
残念ながら、Java 8 にはそのような操作がありません。したがって、この動作を実現するには別のアプローチを検討する必要があります。
Java 8 での takewhile の実装
Java 8 で takewhile を実装するには、次の戦略を活用できます。
以下は実装例:
import java.util.Iterator; import java.util.stream.Stream; public class StreamTakeWhile { public static <T> Stream<T> takeWhile(Stream<T> stream, java.util.function.Predicate<T> predicate) { Iterator<T> iterator = stream.iterator(); return Stream.generate(() -> { if (iterator.hasNext() && predicate.test(iterator.next())) { return iterator.next(); } return null; }); } public static void main(String[] args) { StreamTakeWhile.takeWhile(Stream.iterate(1, n -> n + 1), n -> n < 10) .forEach(System.out::println); } }
Java 9 を使用するtakewhile
Java 9 では、以下に示すように takewhile 操作を直接利用できます。
IntStream .iterate(1, n -> n + 1) .takeWhile(n -> n < 10) .forEach(System.out::println);
以上がJava 9 の「takewhile」に相当する Java 8 をストリームに実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。