Merge Two Sets in Java - GeeksforGeeks

09 Dec, 2021
The set interface is present in java.util package and extends the Collection interface is an unordered collection of objects in which duplicate values cannot be stored. It is an interface that implements the mathematical set. This interface contains the methods inherited from the Collection interface and adds a feature that restricts the insertion of the duplicate elements. There are two interfaces that extend the set implementation namely SortedSet and NavigableSet.
Methods: Following are the various ways to merge two sets in Java: 
Using double brace initializationUsing the addAll() method of the Set classUsing user-defined methodUsing Java 8 stream in the user-defined functionUsing Java 8 stream in the user-defined functionUsing of() and forEach() Methods of Stream classUsing of() and flatMap() Method of Stream class with CollectorUsing concat() method of Stream Class with CollectorUsing Apache Common CollectionsUsing Guava Iterables.concat() 
Using double brace initialization
Using the addAll() method of the Set classUsing user-defined methodUsing Java 8 stream in the user-defined function
Using user-defined method
Using Java 8 stream in the user-defined function
Using Java 8 stream in the user-defined function
Using of() and forEach() Methods of Stream class
Using of() and flatMap() Method of Stream class with Collector
Using concat() method of Stream Class with Collector
Using Apache Common Collections
Using Guava Iterables.concat() 
Method 1: Using Double brace Initialization
Illustration:
Input :  a = [1, 3, 5, 7, 9]
         b = [0, 2, 4, 6, 8]
Output : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Example
Java
// Java Program to Demonstrate Merging of two sets in Java// Using Double brace Initialization  // Importing required classesimport java.io.*;import java.util.*;import java.util.stream.*;  // Main classpublic class GFG {      // Method 1    // To merge two sets    // using DoubleBrace Initialisation    public static <T> Set<T> mergeSet(Set<T> a, Set<T> b)    {          // Adding all elements of respective Sets        // using addAll() method        return new HashSet<T>() {            {                addAll(a);                addAll(b);            }        };    }      // Method 2    // Main driver method    public static void main(String[] args)    {          // Creating the sets to be merged          // First set        Set<Integer> a = new HashSet<Integer>();        // Applying Arrays.asList()        a.addAll(            Arrays.asList(new Integer[] { 1, 3, 5, 7, 9 }));          // Second set        Set<Integer> b = new HashSet<Integer>();        // Applying Arrays.asList()        b.addAll(            Arrays.asList(new Integer[] { 0, 2, 4, 6, 8 }));          // Printing the Sets        System.out.println("Set a: " + a);        System.out.println("Set b: " + b);          // Calling Method 1 to merge above Sets        System.out.println("Merged Set: " + mergeSet(a, b));    }}
Set a: [1, 3, 5, 7, 9]
Set b: [0, 2, 4, 6, 8]
Merged Set: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 
Method 2: Using addAll() Method of Set Class
The addAll() method is provided by the Set interface. It adds the elements passed as parameters at the last of this set. 
2-A. Using user-defined method
Illustration:
Input  : a = [1, 3, 5, 7, 9]
         b = [0, 2, 4, 6, 8]
Output : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Example:
Java
// Java program to demonstrate Merging of Two Sets// Using SetAll() method  // Importing required classesimport java.util.*;  // Main classpublic class GFG {      // Method 1    // To merge two sets    // using addAll()    public static <T> Set<T> mergeSet(Set<T> a, Set<T> b)    {          // Creating an empty HashSet        Set<T> mergedSet = new HashSet<T>();          // Adding the two sets to be merged        // into the new Set using addAll() method        mergedSet.addAll(a);        mergedSet.addAll(b);          // Returning the merged set        return mergedSet;    }      // Method 2    // Main driver method    public static void main(String[] args)    {          // Creating the sets to be merged          // First Set        Set<Integer> a = new HashSet<Integer>();        a.addAll(            Arrays.asList(new Integer[] { 1, 3, 5, 7, 9 }));          // Second Set        Set<Integer> b = new HashSet<Integer>();        b.addAll(            Arrays.asList(new Integer[] { 0, 2, 4, 6, 8 }));          // Printing the Sets        System.out.println("Set a: " + a);        System.out.println("Set b: " + b);          // Calling method 1 to merge above Sets        // and printing it        System.out.println("Merged Set: " + mergeSet(a, b));    }}
Set a: [1, 3, 5, 7, 9]
Set b: [0, 2, 4, 6, 8]
Merged Set: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 
2-B. Using Java 8 stream in the user-defined function
Illustration: 
Input : a = [1, 3, 5, 7, 9]
        b = [0, 2, 4, 6, 8]
Output : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Example
Java
// Java program to demonstrate Merging of Two Sets// Using Stream  // Importing required classesimport java.io.*;import java.util.*;import java.util.stream.*;  // Main classpublic class GFG {      // Method 1    // To merge two Sets    // using addAll()    public static <T> Set<T> mergeSet(Set<T> a, Set<T> b)    {          // Creating a Set with 'a'        Set<T> mergedSet            = a.stream().collect(Collectors.toSet());          // Adding the second set to be merged        mergedSet.addAll(b);          // Returning the merged Set        return mergedSet;    }      // Method 2    // Main driver method    public static void main(String[] args)    {        // Creating the Sets to be merged          // First set        Set<Integer> a = new HashSet<Integer>();        a.addAll(            Arrays.asList(new Integer[] { 1, 3, 5, 7, 9 }));          // Second set        Set<Integer> b = new HashSet<Integer>();        b.addAll(            Arrays.asList(new Integer[] { 0, 2, 4, 6, 8 }));          // Printing above Sets        System.out.println("Set a: " + a);        System.out.println("Set b: " + b);          // Calling method 1 to merge two Sets        System.out.println("Merged Set: " + mergeSet(a, b));    }}
Set a: [1, 3, 5, 7, 9]
Set b: [0, 2, 4, 6, 8]
Merged Set: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 
Method 3:  Using addAll() method of Collections Class 
Illustration:
Input :   a = [1, 3, 5, 7, 9]
          b = [0, 2, 4, 6, 8]
Output :  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Example:
Java
// Java Program to Merge Two Arrays// of Same Type into an Object Array  // Importing required classesimport java.io.*;import java.util.*;  // Main classclass GFG {      // Method 1    // To merging two Sets    // using addAll()    public static Set<Integer> mergeSet(Set<Integer> a,                                        Set<Integer> b)    {          // Creating an empty HashSet of Integer type        Set<Integer> mergedSet = new HashSet<>();          // Adding the two sets to be merged        // into the new Set        Collections.addAll(mergedSet,                           a.toArray(new Integer[0]));        Collections.addAll(mergedSet,                           b.toArray(new Integer[0]));          // Returning the merged Set        return mergedSet;    }      // Method 2    // Main driver method    public static void main(String[] args)    {          // Creating the sets to be merged          // First set        Set<Integer> a = new HashSet<Integer>();        a.addAll(            Arrays.asList(new Integer[] { 1, 3, 5, 7, 9 }));          // Second set        Set<Integer> b = new HashSet<Integer>();        b.addAll(            Arrays.asList(new Integer[] { 0, 2, 4, 6, 8 }));          // Printing the above two Sets        System.out.println("Set a: " + a);        System.out.println("Set b: " + b);          // Calling above method 1 to merge two sets        System.out.println("Merged Set: " + mergeSet(a, b));    }}
Set a: [1, 3, 5, 7, 9]
Set b: [0, 2, 4, 6, 8]
Merged Set: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 
Method 4: Using of() and forEach() Methods of Stream class 
Illustration: 
Input : a = [1, 3, 5, 7, 9]
        b = [0, 2, 4, 6, 8]
Output : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Example:
Java
// Java Program to Demonstrate Merging of Two Sets// Using Stream  // Importing required classesimport java.io.*;import java.util.*;import java.util.stream.*;  // Main classpublic class GFG {      // Method  1    // To merge two sets    // using Stream of() and forEach() methods    public static <T> Set<T> mergeSet(Set<T> a, Set<T> b)    {          // Creating an empty set        Set<T> mergedSet = new HashSet<T>();          // add the two sets to be merged        // into the new set        Stream.of(a, b).forEach(mergedSet::addAll);          // returning the merged set        return mergedSet;    }      // Method 2    // Main driver method    public static void main(String[] args)    {          // Creating the sets to be merged          // First set        Set<Integer> a = new HashSet<Integer>();        a.addAll(            Arrays.asList(new Integer[] { 1, 3, 5, 7, 9 }));          // Second set        Set<Integer> b = new HashSet<Integer>();        b.addAll(            Arrays.asList(new Integer[] { 0, 2, 4, 6, 8 }));          // Printing the above two Sets        System.out.println("Set a: " + a);        System.out.println("Set b: " + b);          // Calling method 1 to merge two Sets        System.out.println("Merged Set: " + mergeSet(a, b));    }}
Set a: [1, 3, 5, 7, 9]
Set b: [0, 2, 4, 6, 8]
Merged Set: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 
Method 5: Using of() and flatMap() Method of Stream class with Collector
Illustration:
Input :  a = [1, 3, 5, 7, 9]
         b = [0, 2, 4, 6, 8]
Output : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Example:
Java
// Java Program to Demonstrate Merging of Two Sets// Using stream  // Importing required classesimport java.io.*;import java.util.*;import java.util.stream.*;  // Main classpublic class GFG {      // Method 1    // To merge two Sets    // using Stream of(), flatMap() and Collector    public static <T> Set<T> mergeSet(Set<T> a, Set<T> b)    {          // Adding the two Sets to be merged        // into the new Set and        // returning the merged set        return Stream.of(a, b)            .flatMap(x -> x.stream())            .collect(Collectors.toSet());    }      // Method 2    // Main driver method    public static void main(String[] args)    {        // Creating the sets to be merged          // First Set        Set<Integer> a = new HashSet<Integer>();        a.addAll(            Arrays.asList(new Integer[] { 1, 3, 5, 7, 9 }));          // Second Set        Set<Integer> b = new HashSet<Integer>();        b.addAll(            Arrays.asList(new Integer[] { 0, 2, 4, 6, 8 }));          // Printing the sets        System.out.println("Set a: " + a);        System.out.println("Set b: " + b);          // Calling method 1 to merge above two Sets        System.out.println("Merged Set: " + mergeSet(a, b));    }}
Set a: [1, 3, 5, 7, 9]
Set b: [0, 2, 4, 6, 8]
Merged Set: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 
Method 6: Using concat() method of Stream Class with Collector
Illustration: 
Input : a = [1, 3, 5, 7, 9]
        b = [0, 2, 4, 6, 8]
Output : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
The concatenate function is used to merge to string and make a single string that contains both the string. Stream.concat() method creates a lazily concatenated stream whose elements are all the elements of the first stream followed by all the elements of the second stream.
Example 
Java
// Java program to Demonstrate Merging of two Sets// using Stream  // Importing required classesimport java.io.*;import java.util.*;import java.util.stream.*;  // Main classpublic class GFG {      // Method 1    // To merge two sets    // using Stream concat() and Collectors    public static <T> Set<T> mergeSet(Set<T> a, Set<T> b)    {          // Adding the two sets to be merged        // into the new Set and        // returning the merged set        return Stream.concat(a.stream(), b.stream())            .collect(Collectors.toSet());    }      // Method 2    // Main driver method    public static void main(String[] args)    {        // Creating the sets to be merged          // First Set        Set<Integer> a = new HashSet<Integer>();        a.addAll(            Arrays.asList(new Integer[] { 1, 3, 5, 7, 9 }));          // Second Set        Set<Integer> b = new HashSet<Integer>();        b.addAll(            Arrays.asList(new Integer[] { 0, 2, 4, 6, 8 }));          // Printing the above two Sets        System.out.println("Set a: " + a);        System.out.println("Set b: " + b);          // Calling the method 1 to merge two Sets        System.out.println("Merged Set: " + mergeSet(a, b));    }}
Set a: [1, 3, 5, 7, 9]
Set b: [0, 2, 4, 6, 8]
Merged Set: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 
Method 7: Using Apache Common Collections
Illustration:
Input :  a = [1, 3, 5, 7, 9]
         b = [0, 2, 4, 6, 8]
Output : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Example
Java
// Java Program to Demonstrate Merging of Two Sets// Using Apache Common Collection  // Importing required classesimport java.io.*;import java.util.*;import org.apache.commons.collections4.SetUtils;  // Main classpublic class GFG {      // Method 1    // To merge two Sets    // using addAll() method    public static <T> Set<T> mergeSet(Set<T> a, Set<T> b)    {          // Adding the two Sets to be merged        // into the new Set and        // returning the merged Set        return SetUtils.union(a, b);    }      // Method 2    // Main driver method    public static void main(String[] args)    {          // Creating the Sets to be merged          // First set        Set<Integer> a = new HashSet<Integer>();        a.addAll(            Arrays.asList(new Integer[] { 1, 3, 5, 7, 9 }));          // Second set        Set<Integer> b = new HashSet<Integer>();        b.addAll(            Arrays.asList(new Integer[] { 0, 2, 4, 6, 8 }));          // Printing the above two Sets        System.out.println("Set a: " + a);        System.out.println("Set b: " + b);          // Calling method 1 to merge two Sets        System.out.println("Merged Set: " + mergeSet(a, b));    }}
Set a: [1, 3, 5, 7, 9]
Set b: [0, 2, 4, 6, 8]
Merged Set: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 
Method 8: Using Guava Iterables.concat()
Illustration:
Input : a = [1, 3, 5, 7, 9]
        b = [0, 2, 4, 6, 8]
Output : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Example
Java
// Java Program to Demonstrate Merging of Two Sets// Using Guava Library  // Importing required classesimport com.google.common.collect.Iterables;import com.google.common.collect.Sets;import java.io.*;import java.util.*;  // Main classpublic class GFG {      // Method 1    // To merge two sets    // using Guava Iterables.concat()    public static <T> Set<T> mergeSet(Set<T> a, Set<T> b)    {          // Adding the two sets to be merged        // into the new set and        // returning the merged set        return Sets.newHashSet(Iterables.concat(a, b));    }      // Method 2    // Main driver method    public static void main(String[] args)    {          // Creating the Sets to be merged          // First set        Set<Integer> a = new HashSet<Integer>();        a.addAll(            Arrays.asList(new Integer[] { 1, 3, 5, 7, 9 }));          // Second set        Set<Integer> b = new HashSet<Integer>();        b.addAll(            Arrays.asList(new Integer[] { 0, 2, 4, 6, 8 }));          // Printing the above two Sets        System.out.println("Set a: " + a);        System.out.println("Set b: " + b);          // Calling method 1 to merge two Sets        System.out.println("Merged Set: " + mergeSet(a, b));    }}
Set a: [1, 3, 5, 7, 9]
Set b: [0, 2, 4, 6, 8]
Merged Set: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 
Note: Any duplicate element presented in the sets will be discarded during the merge in all the above methods.
solankimayank
Java-Collections
java-set
Java-Set-Programs
Picked
Java
Java
Java-Collections
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Interfaces in Java
ArrayList in Java
Stack Class in Java
Singleton Class in Java
LinkedList in Java
Collections in Java
Overriding in Java
Queue Interface In Java
Functional Interfaces in Java
How to add an element to an Array in Java?