Contents
  1. 1. 补:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

public static void main(String[] args) {

List<Integer> list1 = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<Integer>();

for(int i = 1; i <= 11; i++)
list1.add(i);

for(int i = 10; i <= 20; i++)
list2.add(i);

List<Integer> list3 = new ArrayList<Integer>(list1);
List<Integer> list4 = new ArrayList<Integer>(list2);
List<Integer> list5 = new ArrayList<Integer>(list1);
List<Integer> list6 = new ArrayList<Integer>(list2);

list1.addAll(list2);
System.out.println("普通的并集(有重复)" + list1);

Collection<Integer> set1 = new HashSet<Integer>(list1);
System.out.println("数学上的并集(无重复)" + set1);

list3.retainAll(list4);
System.out.println("交集: " + list3);

list5.removeAll(list6);
System.out.println("差集: " + list5);// list1有list2没有
}

输出:
普通的并集(有重复)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
数学上的并集(无重复)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
交集: [10, 11]
差集: [1, 2, 3, 4, 5, 6, 7, 8, 9]

补:

  另一种无“重复”的并集,要求集合A+集合B,但如果集合B中有集合A中的元素,就把集合B的那部分删除,而这部分可能是两个一样的元素,例如:

集合A: 1 1 2 3 4 5
集合B: 3 4
这种无“重复”的并集: 1 1 2 5
解决方法:
List2.removeAll(list1);
List1.addAll(list2);

Contents
  1. 1. 补: