1、用法
[List obj1].retainAll([List obj2]); //交集
[List obj1].addAll([List obj2]); //并集
[List obj1].removeAll([List obj2]); //差集,obj1-obj2
- 集合运算的返回值是一个集合
- 集合运算时一般先把目标集合拷贝备份,不然运算后集合元素将被更改,如:
private List union(List l1,List l2) {
List list =new ArrayList(Arrays.asList(new Object[l1.size()]));
Collections.copy(list, l1); //将l1拷贝到list中
list.addAll(l2);
return list;
}
- 在并集运算中,使用 [List obj].addAll([List obj])的方法得到的结果是两个集合中的所有元素,有可能有重复的元素,跟数学上意义上的并集有所差别 。欲求数学意义上的并集则需进行转化(因此,一般将元素存储到HashSet或TreeSet中,能保证集合运算结果中元素的唯一性),例如:
/*实际的集合运算结果*/
//print the union of the two list
System.out.println("\n");
System.out.println("Union: ");
list=opt.union(l1, l2);
for(i=0;i<list.size();i++) {
System.out.print(list.get(i)+" ");
}
/*运算结果
Union:
1 2 3 4 6 8 2 4 7 9
*/
- 转换成数学意义上的并集结果
/*转换后变成数学意义上的运算结果*/
//print the union of the two list
System.out.println(