package generic;
import java.util.HashSet;
import java.util.Set;
import org.apache.poi.ss.formula.functions.T;
public class Sets {
// 并集
public static <T> Set<T> union(Set<T>... args) {
Set<T> result = new HashSet<T>();
for (Set<T> re : args) {
result.addAll(re);
}
return result;
}
// 交集
public static <T> Set<T> intersection(Set<T>... args) {
Set<T> result = new HashSet<T>(args[0]);
for (Set<T> re : args) {
result.retainAll(re);
}
return result;
}
// 补集
public static <T> Set<T> difference(Set<T>... args) {
Set<T> result = new HashSet<T>(args[0]);
int i = 0;
for (Set<T> re : args) {
if (i == 0) {
i++;
continue;
}
result.removeAll(re);
}
return result;
}
// 交集之外的所用元素
public static <T> Set<T> complement(Set<T>... args) {
return difference(union(args), intersection(args));
}
public static void main(String[] args) {
Set<Integer> set1 = new HashSet<Integer>();
Set<Integer> set2 = new HashSet<Integer>();
for (int i = 0; i <= 5; i++) {
set1.add(i);
set2.add(i + 1);
}
System.out.println(union(set1, set2));
System.out.println(intersection(set1, set2));
System.out.println(difference(set1, set2));
System.out.println(complement(set1, set2));
}
}
import java.util.HashSet;
import java.util.Set;
import org.apache.poi.ss.formula.functions.T;
public class Sets {
// 并集
public static <T> Set<T> union(Set<T>... args) {
Set<T> result = new HashSet<T>();
for (Set<T> re : args) {
result.addAll(re);
}
return result;
}
// 交集
public static <T> Set<T> intersection(Set<T>... args) {
Set<T> result = new HashSet<T>(args[0]);
for (Set<T> re : args) {
result.retainAll(re);
}
return result;
}
// 补集
public static <T> Set<T> difference(Set<T>... args) {
Set<T> result = new HashSet<T>(args[0]);
int i = 0;
for (Set<T> re : args) {
if (i == 0) {
i++;
continue;
}
result.removeAll(re);
}
return result;
}
// 交集之外的所用元素
public static <T> Set<T> complement(Set<T>... args) {
return difference(union(args), intersection(args));
}
public static void main(String[] args) {
Set<Integer> set1 = new HashSet<Integer>();
Set<Integer> set2 = new HashSet<Integer>();
for (int i = 0; i <= 5; i++) {
set1.add(i);
set2.add(i + 1);
}
System.out.println(union(set1, set2));
System.out.println(intersection(set1, set2));
System.out.println(difference(set1, set2));
System.out.println(complement(set1, set2));
}
}
输出:
[0, 1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5]
[0]
[0, 6]