Write a program to implement a set class along with member f
Solution
Set operations: union, intersection, difference, symmetric difference, is subset, is superset
import java.util.Set;
import java.util.TreeSet;
//Class to do Set operations
public class SetOperations {
//Finding Union of two sets (A union B)
public static <T> Set<T> union(Set<T> setA, Set<T> setB) {
Set<T> tmp = new TreeSet<T>(setA);
tmp.addAll(setB);
return tmp;
}
//Finding Intersection of two sets (A intersection B)
public static <T> Set<T> intersection(Set<T> setA, Set<T> setB) {
Set<T> tmp = new TreeSet<T>();
for (T x : setA)
if (setB.contains(x))
tmp.add(x);
return tmp;
}
//Finding Difference of two sets (A - B)
public static <T> Set<T> difference(Set<T> setA, Set<T> setB) {
Set<T> tmp = new TreeSet<T>(setA);
tmp.removeAll(setB);
return tmp;
}
//Finding the Symmetric difference of two sets by finding (A union B) - (A intersection B)
public static <T> Set<T> symDifference(Set<T> setA, Set<T> setB) {
Set<T> tmpA;
Set<T> tmpB;
tmpA = union(setA, setB);
tmpB = intersection(setA, setB);
return difference(tmpA, tmpB);
}
//Find whether this is a subset of A
public static <T> boolean isSubset(Set<T> setA, Set<T> setB) {
return setB.containsAll(setA);
}
//Find whether this is a Super set of A
public static <T> boolean isSuperset(Set<T> setA, Set<T> setB) {
return setA.containsAll(setB);
}
//Test Program main method
public static void main(String args[]) {
//Initialize two sets
TreeSet<Character> set1 = new TreeSet<Character>();
TreeSet<Character> set2 = new TreeSet<Character>();
//Add the elements to Set1
set1.add(\'A\');
set1.add(\'B\');
set1.add(\'C\');
set1.add(\'D\');
//Add the elements to Set2
set2.add(\'C\');
set2.add(\'D\');
set2.add(\'E\');
set2.add(\'F\');
System.out.println(\"set1: \" + set1);
System.out.println(\"set2: \" + set2);
//Do the Set operations
System.out.println(\"Union: \" + union(set1, set2));
System.out.println(\"Intersection: \" + intersection(set1, set2));
System.out.println(\"Difference (set1 - set2): \" + difference(set1, set2));
System.out.println(\"Symmetric Difference: \" + symDifference(set1, set2));
//Initialize a new set3
TreeSet<Character> set3 = new TreeSet<Character>(set1);
set3.remove(\'D\');
System.out.println(\"set3: \" + set3);
//Checking whether this is a subset or superset of any other set
System.out.println(\"Is set1 a subset of set2? \" + isSubset(set1, set3));
System.out.println(\"Is set1 a superset of set2? \" + isSuperset(set1, set3));
System.out.println(\"Is set3 a subset of set1? \" + isSubset(set3, set1));
System.out.println(\"Is set3 a superset of set1? \" + isSuperset(set3, set1));
}
}
Output :-
set1: [A, B, C, D]
set2: [C, D, E, F]
Union: [A, B, C, D, E, F]
Intersection: [C, D]
Difference (set1 - set2): [A, B]
Symmetric Difference: [A, B, E, F]
set3: [A, B, C]
Is set1 a subset of set2? false
Is set1 a superset of set2? true
Is set3 a subset of set1? true
Is set3 a superset of set1? false

