ホームページ >Java >&#&チュートリアル >Java でデータ ストリームから連続するペアを効率的に作成するにはどうすればよいですか?

Java でデータ ストリームから連続するペアを効率的に作成するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-30 06:45:15392ブラウズ

How to Efficiently Create Successive Pairs from a Data Stream in 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 サイトの他の関連記事を参照してください。

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