ホームページ >Java >&#&チュートリアル >Java でデータ ストリームから連続するペアを効率的に作成するにはどうすればよいですか?
プリミティブ値またはオブジェクト値のストリームが与えられると、それをペアのストリームに変換するタスクが発生します。各ペアは次のように構成されます。元のストリームからの 2 つの連続する要素。たとえば、ストリーム {0, 1, 2, 3, 4} の場合、必要な出力は次のようになります。
{ new Pair(0, 1), new Pair(1, 2), new Pair(2, 3), new Pair(3, 4) }
Analysis
Java 8 ストリームライブラリは、並列処理のためにストリームをより小さな部分に分割することに優れています。ただし、ステートフル パイプライン ステージのサポートは限定的であるため、隣接するストリーム要素にアクセスし、現在の要素のインデックスを取得することが困難になります。
解決策
これらを克服するには制限がある場合は、インデックスを使用してストリームを駆動するインデックス付きアプローチを活用できます。これには、要素を簡単に取得できる ArrayList のようなランダム アクセス データ構造に値を格納する必要があります。 ArrayList 内の値を使用して、次のようにペアを構築できます。
IntStream.range(1, arrayList.size()) .mapToObj(i -> new Pair(arrayList.get(i-1), arrayList.get(i))) .forEach(System.out::println);
このアプローチには、入力が有限ストリームである必要があるという制約があることに注意してください。ただし、パイプラインは並列実行できます。
以上がJava でデータ ストリームから連続するペアを効率的に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。