データ構造を扱うとき、さまざまな方法でデータを操作および処理する必要が生じることがよくあります。一般的なシナリオの 1 つは、要素の順次コレクションであるイテレーターを、より多用途かつ強力なデータ処理パイプラインであるストリームに変換することです。
この変換を効果的に達成するには、データのコピーの作成を避けることが重要です。 。これは、特に大規模なデータセットを扱う場合、非効率的かつ不必要です。
1 つのアプローチは、StreamSupport クラスを利用することです。 Iterable または Spliterator からストリームを作成するメソッドを提供します。この場合、Spliterators.spliteratorUnknownSize() を使用して Iterator から Spliterator を作成できます。以下に例を示します。
<code class="java">Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator(); Stream<String> targetStream = StreamSupport.stream( Spliterators.spliteratorUnknownSize(sourceIterator, Spliterator.ORDERED), false);</code>
別のオプションでは、Iterator から Iterable を作成します。 Iterable は関数型インターフェイスであり、ラムダを使用すると、Iterator から Iterable を簡単に作成できます。
<code class="java">Iterable<String> iterable = () -> sourceIterator; Stream<String> targetStream = StreamSupport.stream(iterable.spliterator(), false);</code>
このアプローチは、関数型インターフェイスの設計を利用しているため、おそらくより読みやすくなっています。不必要なコピーを避けることで、パフォーマンスとコードの明瞭さを維持しながらデータを効率的に処理できます。
以上がデータをコピーせずにイテレータをストリームに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。