How to Convert Iterable to Stream in Java

Shubham Vora Feb 02, 2024
How to Convert Iterable to Stream in Java

In Java, we can use the Iterator to iterate through every collection element. The stream is a pipeline of objects from collections.

There can be two types of streams. One is parallel, and another is a sequential stream.

In this article, we will learn a method to convert the Iterable to Stream.

Use the StreamSupport.stream() Method to Convert Iterable to Stream in Java

No method in the iterable interface can directly convert iterable to stream. So, we must use the stream() method of the StreamSupport class.

Users can follow the syntax below to use the stream() method.

Spliterator<T> spliter = iter.spliterator();
return StreamSupport.stream(spliter, isParallel);

Parameters:

spliter It is a spliterator of the iterator, which we have converted using the Iterable.spliterator() method.
isParallel A Boolean value defines whether the stream is parallel or sequential. Users should pass the true Boolean value to get the parallel stream.

In the example below, we have created the iterable of integers. We called the IterToStream() function and passed the iterable as an argument that returns the stream of a particular iterable.

In the ItrToStream() function, we are converting the iterable to spliterator. After that, we used the StreamSupport.stream() method to convert the spliterator to stream.

At last, we are printing the stream.

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));
  }
}

Output:

12121
212123
12213
21212
21212

We have successfully learned to convert iterable to stream in Java using the StreamSupport.stream() method.

Author: 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

Related Article - Java Iterable

Related Article - Java Stream