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

