Have 2 sets with duplicates set1 ={1,2,3,4,5} set2 = {1,3,6,7} and the result should be set3 ={2,4,5,6,7}
Please let me reiterate that I want to use Set interface and the result set should be ordered natural.
2 Answers
- Find the intersection
- Find the union
- Subtract the intersection from the union
Code:
public static void main(String[] args) {
Set<Integer> set1 = new HashSet<Integer>(Arrays.asList(1, 2, 3, 4, 5));
Set<Integer> set2 = new HashSet<Integer>(Arrays.asList(1, 3, 6, 7));
Set<Integer> intersection = new HashSet<Integer>(set1);
intersection.retainAll(set2);
// set1 is now the union of set1 and set2
set1.addAll(set2);
// set1 is now (union - intersection)
// All elements in set1 or set2, but not in both set1 & set2
set1.removeAll(intersection);
for(Integer n : set1) {
System.out.println(n);
}
}
Output:
2
4
5
6
7
Comments
You may try this -
Set set1, set2;
Set newSet = new HashSet(set1);
newSet.addAll(set2);
2 Comments
user_falafel
Will the result set be ordered?
almightyGOSU
Is that correct? Shouldn't you get the union, get the intersection, and remove the intersection from the union?
Setinterface?