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

Java でイテレータをストリームに変換するにはどうすればよいでしょうか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-06 18:02:02820ブラウズ

How do you convert an iterator to a stream in Java?

反復子をストリームに変換する

Java プログラミングでは、反復子をストリームに変換すると、コレクションの要素に順次アクセスできるようになります。 。これは、要素のフィルタリングや削減など、要素の単一パスのみを必要とする操作に役立ちます。

イテレータをストリームに変換するには、StreamSupport クラスとその stream() メソッドを利用できます。このメソッドは、イテレータの基礎となる構造を表す Spliterator を入力として受け取ります。 Spliterators.spliteratorUnknownSize() メソッドを使用して、イテレータからスプリッテレータを取得できます。以下に例を示します。

Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator();
Stream<String> targetStream = StreamSupport.stream(
        Spliterators.spliteratorUnknownSize(sourceIterator, Spliterator.ORDERED),
        false);

イテレータをストリームに変換する別の方法は、ラムダ式を使用してイテラブルを作成することです。 Iterable インターフェイスは機能的です。つまり、単一のメソッドでその実装を定義できます。これを実現する方法は次のとおりです。

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

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

この手法により、特に複雑なイテレータを使用する場合に読みやすさが向上します。

Stream.generate() を使用してイテレータをストリームに変換しようとする場合メソッドを使用する場合、イテレータで hasNext() を呼び出さない場合、NoSuchElementException が発生する可能性があります。これは、hasNext() によって、イテレータが提供する要素を確実に増やすことができるためです。

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

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