コピーせずにイテレータをストリームに変換する
中間コピーを作成せずにイテレータをストリームに直接変換することは、パフォーマンス上の理由から望ましい操作です。この変換を実現するための 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 サイトの他の関連記事を参照してください。