Java で Iterable を Stream に変換する
Shubham Vora
2023年10月12日
Java では、Iterator
を使用して、すべてのコレクション要素を反復処理できます。 ストリームは、コレクションからのオブジェクトのパイプラインです。
ストリームには 2つのタイプがあります。 1つは並列ストリームで、もう 1つは順次ストリームです。
この記事では、Iterable
を Stream
に変換する方法を学びます。
StreamSupport.stream()
メソッドを使用して、Java で Iterable
を Stream
に変換する
iterable
インターフェイスのメソッドは、iterable
を stream
に直接変換できません。 したがって、StreamSupport
クラスの stream()
メソッドを使用する必要があります。
ユーザーは、以下の構文に従って stream()
メソッドを使用できます。
Spliterator<T> spliter = iter.spliterator();
return StreamSupport.stream(spliter, isParallel);
パラメーター:
spliter |
これは、Iterable.spliterator() メソッドを使用して変換したイテレータの spliterator です。 |
isParallel |
ブール値は、ストリームが並列か順次かを定義します。 並列ストリームを取得するには、ブール値 true を渡す必要があります。 |
以下の例では、整数の iterable を作成しました。 IterToStream()
関数を呼び出し、特定の iterable のストリームを返す引数として iterable を渡しました。
ItrToStream()
関数では、イテラブルを spliterator
に変換しています。 その後、StreamSupport.stream()
メソッドを使用して、spliterator
をストリームに変換しました。
最後に、ストリームを印刷しています。
import java.util.*;
import java.util.stream.*;
class Test {
// function to convert iterable to stream
public static <T> Stream<T> ItrToStream(Iterable<T> iter) {
// converting iterable to spliter
Spliterator<T> spliter = iter.spliterator();
// using the stream() method of StreamSupport class
return StreamSupport.stream(spliter, false);
}
public static void main(String[] args) {
// creating array list of Integers
Iterable<Integer> iterable = Arrays.asList(12121, 212123, 12213, 21212, 21212);
// calling the IterToStream Function
Stream<Integer> stream = ItrToStream(iterable);
// Print the element of the sequential stream.
stream.forEach(s -> System.out.println(s));
}
}
出力:
12121
212123
12213
21212
21212
StreamSupport.stream()
メソッドを使用して、Java で iterable
を stream
に変換する方法を学習しました。
著者: Shubham Vora