Set supports the union, intersection, and difference operations.

// Union of s1 and s2 will be stored in s1 s1.add(s2); // Intersection of s1 and s2 will be stored in s1 s1.retainAll(s2); // Difference of s1 and s2 will be stored in s1 s1.removeAll(s2);

During the set operations such as union, intersection, and difference, the set on which you perform the operation is modified.

s1 is modified if you perform s1.addAll(s2) to compute the union of s1 and s2.

To compute the union of two sets and keep the original set unchanged, make a copy of the original set before you perform the union operation.

// Compute the union of two sets by keeping the original set unchangedSets1Unions2 = newHashSet(s1); // Make a copy of s1 // Now, s1Unions2 is the union of s1 and s2 and both s1 and s2 are unchanged s1Unions2.addAll(s2);

You can use the s2.containsAll(s1) method to test if s1 is a subset of s2.

import java.util.HashSet; import java.util.Set; public class Main { public static void main(String[] args) { // Create a setSet<String> s1 = newHashSet<>(); s1.add("XML"); s1.add("Json"); s1.add("Java"); // Create another setSet<String> s2 = newHashSet<>(); s2.add("Python"); s2.add("Ruby"); s2.add("Json"); // Print the elements of both setsSystem.out.println("s1: " + s1);System.out.println("s2: " + s2); // Perform set operations performUnion(s1, s2);/*from ww w . j a v a 2s. c om*/ performIntersection(s1, s2); performDifference(s1, s2); testForSubset(s1, s2); } public static void performUnion(Set<String> s1,Set<String> s2) {Set<String> s1Unions2 = newHashSet<>(s1); s1Unions2.addAll(s2);System.out.println("s1 union s2: " + s1Unions2); } public static void performIntersection(Set<String> s1,Set<String> s2) {Set<String> s1Intersections2 = newHashSet<>(s1); s1Intersections2.retainAll(s2);System.out.println("s1 intersection s2: " + s1Intersections2); } public static void performDifference(Set<String> s1,Set<String> s2) {Set<String> s1Differences2 = newHashSet<>(s1); s1Differences2.removeAll(s2);Set<String> s2Differences1 = newHashSet<>(s2); s2Differences1.removeAll(s1);System.out.println("s1 difference s2: " + s1Differences2);System.out.println("s2 difference s1: " + s2Differences1); } public static void testForSubset(Set<String> s1,Set<String> s2) {System.out.println("s2 is subset s1: " + s1.containsAll(s2));System.out.println("s1 is subset s2: " + s2.containsAll(s1)); } }