ホームページ  >  記事  >  Java  >  Java 8 ストリームの反復フローを制御するにはどうすればよいですか?

Java 8 ストリームの反復フローを制御するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-24 02:23:01371ブラウズ

How to Control the Flow of Java 8 Stream Iterations?

Java 8 ストリームの反復: ブレークまたはリターン

従来の Java 反復では、制御するために拡張された for-each ループ内でブレークまたはリターンを使用していました。外部反復の流れ。 Java 8 ストリームの内部反復で同様の動作を実現するにはどうすればよいですか?

外部反復制御

<code class="java">for (SomeObject obj : someObjects) {
    if (some_condition_met) {
        break; // Exit the loop early
    }
}</code>

内部反復

ラムダ式で forEach を使用するには、別のアプローチが必要です。 forEach は副作用を考慮して設計されており、反復を中断したり反復から戻るための明示的な方法を提供していないことに注意することが重要です。

代替ソリューション

forEach を使用する代わりに、より正確な制御を提供する他のストリーム メソッドの使用を検討してください:

  • findFirst: 条件を満たす最初の要素を見つけることが目的の場合:
<code class="java">Optional<SomeObject> result = someObjects.stream()
    .filter(obj -> some_condition_met)
    .findFirst();</code>

(この最適化により、コレクション全体の反復が回避されます。)

  • anyMatch コレクション内の要素が条件を満たすかどうかを判断するには:
<code class="java">boolean result = someObjects.stream()
    .anyMatch(obj -> some_condition_met);</code>

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

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