HOWTO · Java

Java で Iterable を Stream に変換する

この記事では、Java で Iterable を Stream に変換する方法を学びます。

このページの内容

Java では、Iterator を使用して、すべてのコレクション要素を反復処理できます。 ストリームは、コレクションからのオブジェクトのパイプラインです。

ストリームには 2つのタイプがあります。 1つは並列ストリームで、もう 1つは順次ストリームです。

この記事では、IterableStream に変換する方法を学びます。

StreamSupport.stream() メソッドを使用して、Java で IterableStream に変換する

iterable インターフェイスのメソッドは、iterablestream に直接変換できません。 したがって、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 で iterablestream に変換する方法を学習しました。