java的集合操作,并、交、差、补
java集合操作(并、交、差、补)
以下是本人的一点浅薄认识,欢迎各位大佬批评指出。
Set<String> set1 = new TreeSet<>();
Set<String> set2 = new TreeSet<>();
set1.add("user_1");
set1.add("user_2");
set1.add("user");
set2.add("user");
set2.add("user_A");
set2.add("user_B");
注:
HashSet 集合会调用 hashCode()和 equal()方法来实现元素对比;TreeSet 集合会调用compareTo方法来实现元素对比。TreeSet中的元素是有序且不重复的,非常适合进行集合操作。
如果集合元素是自定义的类对象,在判断重复元素的时候必须时现set集合的相应对比方法。
1.并集操作(set1∪set2):执行以后,set1中就包含set1和set2中的所有元素。
set1.addAll(set2);
2.交集操作(set1 ∩ set2):执行以后,set1中就包含set1和set2中的共有元素。retainAll方法实际执行原理是:删除set1中的“只存在于set1中,不存在于set2中”的元素。
set1.retainAll(set2);
3.差集操作(set1 - set2):执行以后,set1中就包含“只在set1中不在set2中”的元素,removeAll的执行原理:删除set1中“set1和set2共有”的元素。
set1.removeAll(set2);
4.补集操作(set1的补集):set1的补集是全集与set1的差集,即全集减去set1
//setA是set1和set2的并集
setA=set1;
setA.addAll(set2);
//setB是set1和set2的差集
setB=set1;
setB.removeAll(set2);
//setC是set1的相对补集:并集-差集
setC=setA.removeAll(setB);