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 program to create a Sequential Stream// from an Iteratorimportjava.util.*;importjava.util.stream.*;classGfG {// Function to create a sequential Stream// from an Iteratorpublicstatic<T> Stream<T>iteratorToSequentialStream(Iterator<T> itr){// convert the iterator into a SpliteratorSpliterator<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 notreturnStreamSupport.stream(spitr,false);}publicstaticvoidmain(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()));}}chevron_rightfilter_noneOutput: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 program to create a Sequential Stream// from an Iteratorimportjava.util.*;importjava.util.stream.*;classGfG {// Function to create a sequential Stream// from an Iteratorpublicstatic<T> Stream<T>iteratorToSequentialStream(Iterator<T> itr){// Get an iterable from itrIterable<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 notreturnStreamSupport.stream(itb.spliterator(),false);}publicstaticvoidmain(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()));}}chevron_rightfilter_noneOutput:Sequential Stream : [G, E, E, K, S]
Attention reader! Don’t stop learning now. Get hold of all the important Java and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready.
Recommended Posts:
- Parallel vs Sequential Stream in Java
- Convert an Iterator to Stream in Java
- Character Stream Vs Byte Stream in Java
- Difference between Stream.of() and Arrays.stream() method in Java
- IntStream sequential() in Java
- DoubleStream sequential() in Java
- LongStream sequential() in Java
- foreach() loop vs Stream foreach() vs Parallel Stream foreach()
- Iterator vs Foreach In Java
- Retrieving Elements from Collection in Java (For-each, Iterator, ListIterator & EnumerationIterator)
- How to use Iterator in Java?
- TreeSet iterator() Method in Java
- LinkedBlockingDeque iterator() method in Java
- IntStream iterator() in Java
- Java AbstractSequentialList | iterator() method
- Java | Implementing Iterator and Iterable Interface
- DoubleStream iterator() in Java
- LongStream iterator() in Java
- HashSet iterator() Method in Java
- PriorityQueue iterator() Method in Java
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

