Java Programming Set operations using iterators implement a
*Java Programming*
Set operations using iterators: implement a program that creates the sets below (as ArrayLists of Integers), and then finds the result of the operations below. You only need a single .java file with the main routine; you do not have to put each set operation in its own method. Do NOT use the toArray( ) method; you will only need the add( ), addAll( ), contains( ), iterator( ), isEmpty( ), and remove( ) methods defined for the ArrayList. Recall that sets cannot have duplicate entries.
Sets: U = {1,2,3,4,5,6,7,8,9,10} (universe set)
E = {2,4,6,8,10}
O = {1,3,5,7,9}
A = {3,4,5}
B = {5,6,7}
C = { } (empty set)
Ensure the following operations: find A union B, A intersect B, A complement O minus B, E minus A, A symmetric difference B (the symmetric difference of 2 sets is the elements in either, but not in their intersection)
Subsets: write a method that takes two sets, determines if the first is a subset of the second, and returns true or false.
Solution
import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Set;
public class SetOperations {
   public static void main(String[] args) {
        Set<Integer> U = new HashSet<Integer>(){{
            add(1);add(2);add(3);add(4);add(5);add(6);add(7);add(8);add(9);add(10);
         }};
        Set<Integer> E = new HashSet<Integer>(){{
            add(2);add(4);add(6);add(8);add(10);
        }};
        Set<Integer> O = new HashSet<Integer>(){{
            add(1);add(3);add(5);add(7);add(9);
        }};
        Set<Integer> A = new HashSet<Integer>(){{
            add(3);add(4);add(5);
        }};
        Set<Integer> B = new HashSet<Integer>(){{
            add(5);add(6);add(7);
        }};
        Set<Integer> C = new HashSet<Integer>();
       
        System.out.println(\"A union B : \"+union(A,B));
        System.out.println(\"A intersection B : \"+intersection(A,B));
        System.out.println(\"A compliment O minus B: \"+minus(compliment(O,A),B));
        System.out.println(\"E minus A : \"+minus(E,A));
        System.out.println(\"A symmetric difference B : \"+symmetricDifference(A,B));
        System.out.println(\"B subset of U : \"+isSubset(U,B));
    }
   public static Set<Integer> union(Set<Integer> setA,Set<Integer> setB){
        Set<Integer> resultSet = new HashSet<Integer>();
        resultSet.addAll(setA);
        Iterator<Integer> iterator = setB.iterator();
        Integer number;
        while(iterator.hasNext()){
            number = iterator.next();
            if(!setA.contains(number)){
                resultSet.add(number);
            }
        }
        return resultSet;
    }
   
    public static Set<Integer> intersection(Set<Integer> setA,Set<Integer> setB){
        Set<Integer> resultSet = new HashSet<Integer>();
        Iterator<Integer> iterator = setB.iterator();
        Integer number;
        while(iterator.hasNext()){
            number = iterator.next();
            if(setA.contains(number)){
                resultSet.add(number);
            }
        }
        return resultSet;
    }
   
    public static Set<Integer> minus(Set<Integer> setA,Set<Integer> setB){
        Set<Integer> resultSet = new HashSet<Integer>();
        resultSet.addAll(setA);
        Iterator<Integer> iterator = setB.iterator();
        Integer number;
        while(iterator.hasNext()){
            number = iterator.next();
            if(setA.contains(number)){
                resultSet.remove(number);
            }
        }
        return resultSet;
    }
   
    public static Set<Integer> compliment(Set<Integer> U, Set<Integer> set){
        return minus(U, set);
    }
   
    public static boolean isSubset(Set<Integer> setA,Set<Integer> setB){
        return setA.containsAll(setB);
    }
   
    public static Set<Integer> symmetricDifference(Set<Integer> setA,Set<Integer> setB){
        return minus(union(setA,setB),intersection(setA, setB));
    }
 }


