-6

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.

4
  • So what have you tried so far? Have you looked at the Set interface? Commented Jun 9, 2015 at 9:10
  • Yes, looked at this was an interview question. Commented Jun 9, 2015 at 9:12
  • 1
    this has been asked before. We want to help people out, but please check google before posting a question :) Commented Jun 9, 2015 at 9:13
  • I don't see how "looked at this was an interview question" answers my question at all... Commented Jun 9, 2015 at 9:19

2 Answers 2

2
  • 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
Sign up to request clarification or add additional context in comments.

Comments

1

You may try this -

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

2 Comments

Will the result set be ordered?
Is that correct? Shouldn't you get the union, get the intersection, and remove the intersection from the union?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.