import java.util.*; public class TreeSetWithOps extends TreeSet { public Set setIntersection(Set set2) { Set answer = new TreeSet(); Iterator it = this.iterator(); while(it.hasNext()) { Object temp = it.next(); if(set2.contains(temp)) answer.add(temp); } return answer; } public Set setUnion(Set set2) { Set answer = new TreeSet(); Iterator it1 = this.iterator(); Iterator it2 = set2.iterator(); while(it1.hasNext()) answer.add(it1.next()); while(it2.hasNext()) answer.add(it2.next()); return answer; } public Set setDifference(Set set2) { Set answer = new TreeSet(); Iterator it = this.iterator(); while(it.hasNext()) { Object temp = it.next(); if(!set2.contains(temp)) answer.add(temp); } return answer; } public boolean isSubset(Set set2) { return set2.equals(setIntersection(set2)); } public boolean isProperSubset(Set set2) { return set2.size() < this.size() && isSubset(set2); } }