集合运算
集合运算:求交集,并集,差集。以及求子集和补集。(图片来自百科)
工具类import java.util.*;
class SetUtil {
// 并集
static Set union(Set a, Set b) {
Set unionSet = new LinkedHashSet(a);
unionSet.addAll(b);// Set容器中元素唯一,不会重复。
return unionSet;
}
// 交集
static Set intersection(Set a, Set b) {
Set intersectionSet = new LinkedHashSet(a);
intersectionSet.retainAll(b);// 只保留二者皆有的元素。
return intersectionSet;
}
// 差集
static Set different(Set a, Set b) {
Set differentSet = new LinkedHashSet(a);
differentSet.removeAll(b);// 删除a中二者皆有的元素。
return differentSet;
}
}
测试public static void main(String[] args) {
HashSet a = new HashSet<>(Arrays.asList(new Integer[]{1, 2, 3, 4, 5}));
HashSet b = new HashSet<>(Arrays.asList(new Integer[]{3, 4, 5, 6, 7}));
System.out.println(a);
System.out.println(b);
System.out.println("并集:" + SetUtil.union(a, b));
System.out.println("交集:" + SetUtil.intersection(a, b));
System.out.println("差集:" + SetUtil.different(a, b));
System.out.println("差集:" + SetUtil.different(b, a));
System.out.println("差集:" + SetUtil.different(a, a));
}
输出[1, 2, 3, 4, 5]
[3, 4, 5, 6, 7]
并集:[1, 2, 3, 4, 5, 6, 7]
交集:[3, 4, 5]
差集:[1, 2]
差集:[6, 7]
差集:[]