创建一个用Set来表达数学中的关系式
这里通过使用泛型方法来创建一个Set
工具类来表达数学中关于集合的关系表达式,并且可以运用于多个类型之中。
public class Sets {
public static <T> Set<T> union(Set<T> a, Set<T> b) {
Set<T> result = new HashSet<>(a);
result.addAll(b);
return result;
}
public static <T> Set<T> intersection(Set<T> a, Set<T> b) {
Set<T> result = new HashSet<>(a);
result.retainAll(b);
return result;
}
public static <T> Set<T> difference(Set<T> superSet, Set<T> subSet) {
Set<T> result = new HashSet<>(superSet);
superSet.removeAll(subSet);
return result;
}
public static <T> Set<T> complement(Set<T> a, Set<T> b) {
return difference(union(a, b), intersection(a, b));
}
}
在前三个方法中,都将第一个参数Set
直接复制了一份,将Set
中的所有引用都存入一个新的HashSet
对象中,因此在方法内部并没有修改Set
,而返回的值是一个全新的对象。
这四个方法分别表示以下的操作
-
union
并集 -
intersection
交集 -
difference
差集 -
complement
补集