ホームページ > Java > &#&チュートリアル > インデックスにアクセスして Java 8 ストリームを効率的に反復するにはどうすればよいですか?

インデックスにアクセスして Java 8 ストリームを効率的に反復するにはどうすればよいですか?

DDD
リリース: 2024-12-28 19:27:14
オリジナル
742 人が閲覧しました

How Can I Efficiently Iterate Through a Java 8 Stream with Access to Indices?

Java 8 でのインデックスを使用した簡潔なストリーム反復

Java 8 でストリームの反復を行いながら、そのインデックスにアクセスするには、次のように実行できます。さまざまな方法がありますが、最も簡単なのは、一連の流れから開始することです。 indices.

たとえば、以下のコードは、0 から "names" 配列の長さまでの整数のストリームを生成し、対応する文字列の長さがインデックスより大きいインデックスを除外し、結果の文字列を収集します。リストへ:

String[] names = {"Sam", "Pamela", "Dave", "Pascal", "Erik"};
List<String> nameList = IntStream.range(0, names.length)
         .filter(i -> names[i].length() <= i)
         .mapToObj(i -> names[i])
         .collect(Collectors.toList());
ログイン後にコピー

これは、長さ (4) がそのインデックス以下であるため、「Erik」のみを含むリストになります。 (4).

別のアプローチは、あまり簡潔ではありませんが、フィルター メソッド内でアドホック カウンタを維持することです。ただし、並列ストリームでこのメソッドを使用すると、項目が順序どおりに処理されない可能性があることに注意することが重要です

String[] names = {"Sam", "Pamela", "Dave", "Pascal", "Erik"};
AtomicInteger index = new AtomicInteger();
List<String> list = Arrays.stream(names)
                          .filter(n -> n.length() <= index.incrementAndGet())
                          .collect(Collectors.toList());
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート