Removing duplicates from arraylist using set

660 Views Asked by At

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

There are 2 best solutions below

0
On BEST ANSWER
  • 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
2
On

You may try this -

Set set1, set2;
Set newSet = new HashSet(set1);
newSet.addAll(set2);