ホームページ >Java >&#&チュートリアル >述語に基づいて無限の Java 8 ストリームを制限するにはどうすればよいですか?

述語に基づいて無限の Java 8 ストリームを制限するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-26 13:40:10561ブラウズ

How Can I Limit an Infinite Java 8 Stream Based on a Predicate?

Java 8: 述語一致に基づくストリーム制限の実装

Java 8 には、要素が完成するまで潜在的に無限のストリームを制限する特定のストリーム操作がありません。指定された述語と一致しません。 Java 9 ではこの目的のために takewhile 操作が導入されていますが、Java 8 ユーザーは別の実装戦略を模索しています。

Java 8 での解決策

Java で述語ベースのストリーム制限を実装するには8 では、次のアプローチを使用できます。

  • 無限を作成するストリーム: Stream.iterate または Stream.generate を利用して、値の無限ストリームを作成します。
  • 制限とフィルターを使用する 操作: 任意の制限を使用して制限操作を適用します (例: Long.MAX_VALUE) を使用して、無限の反復を回避します。次に、フィルターを使用して各要素の述語を評価します。これにより、述語が失敗するまで繰り返しが継続されます。

例:

IntStream.iterate(1, n -> n + 1)
    .limit(Long.MAX_VALUE)
    .filter(n -> n < 10)
    .forEach(System.out::println);

Java 9 以降

Java 9 以降を使用している場合、takewhile 操作により実装:

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

以上が述語に基づいて無限の Java 8 ストリームを制限するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。