In Java 8, there are two methods to convert Array into a Stream:
- Stream.toArray()
- Arrays.stream()
1. Object Arrays
In case of object arrays, you can use both Arrays.stream()
and Stream.of()
methods as both return the same output.
import java.util.Arrays; import java.util.stream.Stream; public class ArrayToStreamExample { public static void main(String[] args) { String[] array = { "a", "b", "c" }; // Using Arrays.stream() Stream<String> stream1 = Arrays.stream(array); System.out.println("Output using Arrays.stream"); stream1.forEach(x -> System.out.println(x)); // Using Stream.of() Stream<String> stream2 = Stream.of(array); System.out.println("Output using Stream.of"); stream2.forEach(x -> System.out.println(x)); } }
Output
Output using Arrays.stream a b c Output using Stream.of a b c
For object arrays, the
Stream.of()
method calls theArrays.stream()
method internally.
2. Primitive arrays
In case of primitive arrays, Stream.of()
and Arrays.stream()
return different types. Following are the overloaded versions of Arrays.stream()
:
- static DoubleStream stream(double[] array)
- static DoubleStream stream(double[] array, int startInclusive, int endExclusive)
- static IntStream stream(int[] array)
- static IntStream stream(int[] array, int startInclusive, int endExclusive)
- static LongStream stream(long[] array)
- static LongStream stream(long[] array, int startInclusive, int endExclusive)
- static Stream stream(T[] array)
- static Stream stream(T[] array, int startInclusive, int endExclusive)
Following are the overloaded versions of Stream.of()
method:
- static Stream of(T… values)
- static Stream of(T t)
import java.util.Arrays; import java.util.stream.IntStream; import java.util.stream.Stream; public class ArrayToStreamExample { public static void main(String[] args) { int[] intArray = { 1, 2, 3, 4, 5 }; // Using Arrays.stream() IntStream intStream1 = Arrays.stream(intArray); System.out.println("Iterating Arrays.stream result"); intStream1.forEach(x -> System.out.println(x)); // Stream.of() returns Stream<int[]> Stream<int[]> streamIntArray = Stream.of(intArray); // Since it is stream of array, you need to flat IntStream intStream2 = streamIntArray.flatMapToInt(x -> Arrays.stream(x)); System.out.println("Iterating IntStream"); intStream2.forEach(x -> System.out.println(x)); } }
Output
Iterating Arrays.stream result 1 2 3 4 5 Iterating IntStream 1 2 3 4 5