Java で Iterable を Stream に変換する

Shubham Vora 2023年10月12日
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 に変換する方法を学習しました。

著者: Shubham Vora
Shubham Vora avatar Shubham Vora avatar

Shubham is a software developer interested in learning and writing about various technologies. He loves to help people by sharing vast knowledge about modern technologies via different platforms such as the DelftStack.com website.

LinkedIn GitHub

関連記事 - Java Stream