Skip to content
Related Articles

Related Articles

Improve Article
Program to convert a Set to Stream in Java using Generics
  • Last Updated : 11 Dec, 2018

Java Set is a part of java.util package and extends java.util.Collection interface. It does not allow the use of duplicate elements and at max can accommodate only one null element.

A Stream is a sequence of objects that supports various methods which can be pipelined to produce the desired result.

Below are the various methods to convert Set to Stream.

  1. Using Collection.stream(): This method involves directly converting the Set to Stream using Collection.stream() method.

    Algorithm:

    1. Get the Set to be converted.
    2. Convert Set to Stream. This is done using Set.stream().
    3. Return/Print the Stream.




    // Java Program to convert
    // Set to Stream in Java 8
      
    import java.util.*;
    import java.util.stream.*;
    import java.util.function.*;
      
    class GFG {
      
        // Generic function to convert a set to stream
        private static <T> Stream<T> convertSetToStream(Set<T> set)
        {
            return set.stream();
        }
      
        // Main method
        public static void main(String args[])
        {
            // Create a set of String
            Set<Integer> setOfInteger = new HashSet<>(
                Arrays.asList(2, 4, 6, 8, 10));
      
            // Print the set of Integer
            System.out.println("Set of Integer: " + setOfInteger);
      
            // Convert Set of Stream
            Stream<Integer>
                streamOfInteger = convertSetToStream(setOfInteger);
      
            // Print the Stream of Integer
            System.out.println("Stream of Integer: "
                               + Arrays.toString(
                                 streamOfInteger.toArray()));
        }
    }
    Output:



    Set of Integer: [2, 4, 6, 8, 10]
    Stream of Integer: [2, 4, 6, 8, 10]
    
  2. Using Predicate to filter the Stream: In this method filter(Predicate) method is used that returns a stream consisting of elements that match the given predicate condition. The Functional Interface Predicate is defined in the java.util.Function package and can therefore be used as the assignment target for a lambda expression or method reference. It improves manageability of code, helps in unit-testing them separately

    Algorithm:

    1. Get the Set to be converted.
    2. Define the Predicate condition by either using pre-defined static methods or by creating a new method by overriding the Predicate interface. In this program, the interface is overridden to match the strings that start with ā€œGā€.
    3. Convert Set to Stream. This is done using Set.stream().
    4. Filter the obtained stream using the defined predicate condition
    5. The required Stream has been obtained. Return/Print the Stream.




    // Java Program to convert
    // Set to Stream in Java 8
      
    import java.util.*;
    import java.util.stream.*;
    import java.util.function.*;
      
    class GFG {
      
        // Generic function to convert a set to stream
        private static <T> Stream<T>
        convertSetToStream(Set<T> set, Predicate<T> predicate)
        {
            return set.stream()
                .filter(predicate);
        }
      
        // Main method
        public static void main(String args[])
        {
            // Create a set of String
            Set<String>
                setOfString = new HashSet<>(
                    Arrays.asList("GeeksForGeeks",
                                  "A computer portal",
                                  "for",
                                  "Geeks"));
      
            // Print the set of String
            System.out.println("Set of String: " + setOfString);
      
            // Create the predicate for item starting with G
            Predicate<String> predicate = new Predicate<String>() {
                @Override
                public boolean test(String s)
                {
                    // filter items that start with "G"
                    return s.startsWith("G");
                }
            };
      
            // Convert Set of Stream
            Stream<String>
                streamOfString = convertSetToStream(setOfString, predicate);
      
            // Print the filter Stream of String
            System.out.println("Stream from List with items"
                               + " starting with G: ");
      
            System.out.println(Arrays.toString(
                streamOfString.toArray()));
        }
    }
    Output:
    Set of String: [for, Geeks, GeeksForGeeks, A computer portal]
    Stream from List with items starting with G: 
    [Geeks, GeeksForGeeks]
    

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.




My Personal Notes arrow_drop_up
Recommended Articles
Page :