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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-07 01:05:02992ブラウズ

How to Convert an Iterator to a Stream Without Creating a Copy?

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

中間コピーを作成せずにイテレータをストリームに直接変換することは、パフォーマンス上の理由から望ましい操作です。この変換を実現するための 2 つの効果的な方法を次に示します。

方法 1: Spliterator を使用する

Spliterators クラスを使用して 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>

方法 2: Iterable を使用する

ラムダ式を使用して Iterator から Iterable を作成します。 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>

両方のメソッドでコピーを回避する鍵となるのは、StreamSupport クラスを利用することです。これにより、Spliterator または Spliterator から直接 Stream を作成できます。中間のコレクション操作なしで反復可能です。

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

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