集合运算工具

集合运算

集合运算:求交集,并集,差集。(图片来自百科)
在这里插入图片描述

工具类

import java.util.*;

class SetUtil {
	// 并集
	static <T> Set<T> union(Set<T> a, Set<T> b) {
		Set<T> unionSet = new LinkedHashSet<T>(a);
		unionSet.addAll(b);	// Set容器中元素唯一,不会重复。
		return unionSet;
	}

	// 交集
	static <T> Set<T> intersection(Set<T> a, Set<T> b) {
		Set<T> intersectionSet = new LinkedHashSet<T>(a);
		intersectionSet.retainAll(b);	// 只保留二者皆有的元素。
		return intersectionSet;
	}

	// 差集
	static <T> Set<T> different(Set<T> a, Set<T> b) {
		Set<T> differentSet = new LinkedHashSet<T>(a);
		differentSet.removeAll(b);	// 删除a中二者皆有的元素。
		return differentSet;
	}
}

测试

public static void main(String[] args) {
	HashSet<Integer> a = new HashSet<>(Arrays.asList(new Integer[]{1, 2, 3, 4, 5}));
	HashSet<Integer> 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]
差集:[]

猜你喜欢

转载自blog.csdn.net/wuyujin1997/article/details/82931424
今日推荐