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 サイトの他の関連記事を参照してください。