Using StreamSupport# stream method, we can get a new sequential or parallel Stream.
Step 1: Get the spliterator from iterator.
'Spliterators.spliterator' method return a spliterator from an Iterator.
public static <T> Spliterator<T> spliterator(Iterator<? extends T> iterator, long size, int characteristics)
public static <T> Spliterator<T> spliteratorUnknownSize(Iterator<? extends T> iterator, int characteristics)
Creates a Spliterator using a given Iterator as the source of elements, and with a given initially reported size.
Example
Spliterator<T> spliterator = Spliterators.spliteratorUnknownSize(iterator, Spliterator.ORDERED);
Step 2: Use StreamSupport.stream method to get the stream from a spliterator.
public static <T> Stream<T> stream(Spliterator<T> spliterator, boolean parallel)
Creates a new sequential or parallel Stream from a Spliterator. If the argument 'parallel' is set to true then the returned stream is a parallel stream. If the argument 'parallel' is set to false then the returned stream is a sequential stream.
Example
StreamSupport.stream(spliterator, false);
Find the below working application.
Below
snippet gets the Stream from an Iterator.
public static <T> Stream<T> toStream(final Iterator<T> iterator) {
Spliterator<T> spliterator = Spliterators.spliteratorUnknownSize(iterator, Spliterator.ORDERED);
return StreamSupport.stream(spliterator, false);
}
Find the
below working application.
StreamFromIterator.java
package com.sample.app.streams;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
public class StreamFromIterator {
public static <T> Stream<T> toStream(final Iterator<T> iterator) {
Spliterator<T> spliterator = Spliterators.spliteratorUnknownSize(iterator, Spliterator.ORDERED);
return StreamSupport.stream(spliterator, false);
}
public static void main(String[] args) {
List<Integer> primes = Arrays.asList(2, 3, 5, 7, 11);
System.out.println("First 5 prime numbers : ");
toStream(primes.iterator()).forEach(System.out::println);
}
}
Output
First 5 prime numbers : 2 3 5 7 11
You may like
Convert an Iterable to a Set in Java
Get the last element from a collection in Java
Implement stack data structure using List
No comments:
Post a Comment