泛型方法——一个Set实用工具

2017-09-10  本文已影响19人  呆呆李宇杰

创建一个用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,而返回的值是一个全新的对象。
这四个方法分别表示以下的操作

上一篇 下一篇

猜你喜欢

热点阅读