ホームページ  >  記事  >  Java  >  不要なコピーを作成せずにイテレータをストリームに変換するにはどうすればよいですか?

不要なコピーを作成せずにイテレータをストリームに変換するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-06 13:11:02174ブラウズ

How can I convert an Iterator to a Stream without creating unnecessary copies?

コピーせずにイテレータをストリームに変換する

イテレータをストリームに変換すると、不要なストリームを作成せずにストリームの強力な機能を活用するのに役立ちます。オリジナルコレクションのコピー。ただし、パフォーマンス上の理由から、コピーを避けることが重要です。

効果的なアプローチの 1 つは、Java の Spliterator インターフェイスを活用することです。イテレータから 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>

別の方法は、より読みやすいと感じる人もいるかもしれませんが、ラムダを使用してイテレータから Iterable を作成することです。関数インターフェイス:

<code class="java">Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator();

Iterable<String> iterable = () -> sourceIterator;
Stream<String> targetStream = StreamSupport.stream(iterable.spliterator(), false);</code>

このメソッドは中間リストの必要性を回避し、イテレータからストリームへの効率的な変換を保証します。

以上が不要なコピーを作成せずにイテレータをストリームに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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