Convert Stream to Set in Java

11 Dec, 2018
Below given are some methods which can be used to convert Stream to Set in Java.
Stream collect() method takes elements from a stream and stores them in a collection.collect(Collector.toSet()) collects elements from a stream to a Set.
Stream.collect() method can be used to collect elements of a stream in a container. The Collector which is returned by Collectors.toSet() can be passed that accumulates the elements of stream into a new Set.
// Java code for converting // Stream to Set using Collectorsimport java.util.*;import java.util.stream.Stream;import java.util.stream.Collectors;  class GFG {          // Driver code    public static void main(String[] args) {          // Creating a Stream of Integers    Stream<Integer> stream = Stream.of(-2, -1, 0, 1, 2);          // Using Stream.collect() to collect the     // elements of stream in a container.    Set<Integer> streamSet = stream.collect(Collectors.toSet());          // Displaying the elements    streamSet.forEach(num -> System.out.println(num));    }}
-1
0
-2
1
2

The problem of converting Stream into Set can be divided into two parts :
1) Convert Stream to an Array
2) Convert Array to a Set

// Java code for converting // Stream to Set using Divide // and Conquerimport java.util.*;import java.util.stream.Stream;import java.util.stream.Collectors;  class GFG {          // Driver code    public static void main(String[] args) {          // Creating a Stream of Strings    Stream<String> stream = Stream.of("G", "E", "K", "S");          // Converting Stream into an Array    String[] arr = stream.toArray(String[] :: new);          // Creating a HashSet    Set<String> set = new HashSet<>();          // Converting Array to set    Collections.addAll(set,arr);          // Displaying the elements    set.forEach(str -> System.out.println(str));    }}
S
E
G
K

Note : Output is random because HashSet takes input in random order as generated hash value.
Stream can be converted into Set using forEach(). Loop through all elements of the stream using forEach() method and then use set.add() to add each elements into an empty set.
// Java code for converting // Stream to Set using forEachimport java.util.*;import java.util.stream.Stream;import java.util.stream.Collectors;  class GFG {          // Driver code    public static void main(String[] args) {          // Creating a Stream of Integers    Stream<Integer> stream = Stream.of(5, 10, 15, 20, 25);      // Creating a HashSet    Set<Integer> set = new HashSet<>();          // using set.add() to add elements     // of stream into empty set    stream.forEach(set::add);          // Displaying the elements    set.forEach(num -> System.out.println(num));    }}
20
5
25
10
15

Note : If Stream is parallel, then elements may not be processed in original order using forEach() method. To preserve the original order, forEachOrdered() method is used.
Convert a Set to Stream in Java
Java - util package
Java-Collections
java-hashset
java-set
Java-Set-Programs
java-stream
Java-Stream-programs
Java
Java
Java-Collections
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Queue Interface In Java
Object Oriented Programming (OOPs) Concept in Java
Stack Class in Java
Interfaces in Java
ArrayList in Java
HashMap in Java with Examples
Collections in Java
ChronoZonedDateTime isAfter() method in Java with Examples
Multidimensional Arrays in Java
Introduction to Java