Creating Sequential Stream from an Iterator in Java Last Updated : 11 Jul, 2025 Summarize Comments Improve Suggest changes Share Like Article Like Report Iterators, in Java, are used in Collection Framework to retrieve elements one by one. A stream in Java is a pipeline of objects from an array or a collection data source. A sequential stream is one in which the objects are pipelined in a single stream on the same processing system. Other types of stream include Parallel stream in which the objects are pipelined on multi-processing system. Hence often it is required to use the iterator as a sequential stream. There are many ways in which it can be done, these are: Using Spliterator: Spliterator like other Iterators, are for traversing the elements of a source. A source can be a Collection, an IO channel or a generator function. Methods used: Class Modifier and Type Method Description Spliterators static <T> Spliterator<T> spliteratorUnknownSize(Iterator<? extends T> iterator, int characteristics) Creates a Spliterator using a given Iterator as the source of elements, with no initial size estimate. StreamSupport static <T> Stream<T> stream(Spliterator<T> spliterator, boolean parallel) Creates a new sequential or parallel Stream from a Spliterator. Explanation: Spliterator acts as the intermediate while creating Sequential Stream from Iterator. The Iterator is first converted to Spliterator with the help of Spliterators.spliteratorUnknownSize(). Find the method description of this below. The Spliterator is then converted to Sequential Stream with the help of StreamSupport.stream() function. The second parameter of this function takes the boolean value to whether the stream to be generated is Parallel or not. Program: Java // Java program to create a Sequential Stream // from an Iterator import java.util.*; import java.util.stream.*; class GfG { // Function to create a sequential Stream // from an Iterator public static <T> Stream<T> iteratorToSequentialStream(Iterator<T> itr) { // convert the iterator into a Spliterator Spliterator<T> spitr = Spliterators.spliteratorUnknownSize( itr, Spliterator.NONNULL); // Convert spliterator into a sequential stream // The second parameter "false" passess whether // the stream is to be created parallel or not return StreamSupport.stream(spitr, false); } public static void main(String[] args) { Iterator<String> iterator = Arrays.asList("G", "E", "E", "K", "S").iterator(); Stream<String> stream = iteratorToSequentialStream(iterator); System.out.println("Sequential Stream : " + stream.collect(Collectors.toList())); } } Output: Sequential Stream : [G, E, E, K, S] Using Iterable.Spliterator(): Spliterator is the key to create the sequential stream. Hence in this method also, Spliterator is used. But in this method, the source of Spliterator is set to an Iterable created from the Iterator. So first the Iterable is created from the Iterator. Then the Spliterator is passed to the stream() method directly as Iterable.spliterator(). Program: Java // Java program to create a Sequential Stream // from an Iterator import java.util.*; import java.util.stream.*; class GfG { // Function to create a sequential Stream // from an Iterator public static <T> Stream<T> iteratorToSequentialStream(Iterator<T> itr) { // Get an iterable from itr Iterable<T> itb = () -> itr; // Get spliterator() from iterable and then // Convert into a sequential stream. // The second parameter "false" passess whether the // stream is to be created parallel or not return StreamSupport.stream(itb.spliterator(), false); } public static void main(String[] args) { Iterator<String> iterator = Arrays.asList("G", "E", "E", "K", "S").iterator(); Stream<String> stream = iteratorToSequentialStream(iterator); System.out.println("Sequential Stream : " + stream.collect(Collectors.toList())); } } Output: Sequential Stream : [G, E, E, K, S] Comment More infoAdvertise with us Next Article Convert an Iterable to Stream in Java R RishabhPrabhu Follow Improve Article Tags : Java Java - util package java-stream Java-Iterable Java-Iterator Java-Stream-programs +2 More Practice Tags : Java Similar Reads Convert an Iterator to Stream in Java Given an Iterator, the task is to convert it into Stream in Java. Examples: Input: Iterator = {1, 2, 3, 4, 5} Output: {1, 2, 3, 4, 5} Input: Iterator = {'G', 'e', 'e', 'k', 's'} Output: {'G', 'e', 'e', 'k', 's'} Approach: Get the Iterator. Convert the iterator to Spliterator using Spliterators.split 1 min read Convert an Iterator to a List in Java Given an Iterator, the task is to convert it into List in Java. Examples: Input: Iterator = {1, 2, 3, 4, 5} Output: {1, 2, 3, 4, 5} Input: Iterator = {'G', 'e', 'e', 'k', 's'} Output: {'G', 'e', 'e', 'k', 's'} Below are the various ways to do so: Naive Approach: Get the Iterator. Create an empty lis 2 min read Difference Between Iterator and Spliterator in Java The Java Iterator interface represents an object capable of iterating through a collection of Java objects, one object at a time. The Iterator interface is one of the oldest mechanisms in Java for iterating collections of objects (although not the oldest â Enumerator predated Iterator). Moreover, an 4 min read Convert an Iterable to Stream in Java Given an Iterable, the task is to convert it into Stream in Java. Examples: Input: Iterable = [1, 2, 3, 4, 5] Output: {1, 2, 3, 4, 5} Input: Iterable = ['G', 'e', 'e', 'k', 's'] Output: {'G', 'e', 'e', 'k', 's'} Approach: Get the Iterable. Convert the Iterable to Spliterator using Iterable.spliterat 1 min read Enumeration vs Iterator vs ListIterator in Java Enumeration is an interface. It is used in the collection framework in java to retrieve the elements one by one. Enumeration is a legacy interface that is applicable only for legacy classes like Vector, HashTable, Stack, etc. It provides a single direction iteration. By using enumeration, we can per 4 min read Generate Infinite Stream of Integers in Java Given the task is to generate an infinite sequential unordered stream of integers in Java. This can be done in following ways: Using IntStream.iterate(): Using the IntStream.iterate() method, iterate the IntStream with i by incrementing the value with 1. Print the IntStream with the help of forEach( 2 min read Like