Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

*Java Programming* Set operations using iterators: implement a program that crea

ID: 3937814 • Letter: #

Question

*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.

Explanation / Answer

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));
   }
}