List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
list1.add("111");
list1.add("222");
list1.add("222")
list1.add("333");
list2.add("444");
list2.add("222");
list2.add("222");
list2.add("555");
Collection ret = CollectionUtils.intersection(list1, list2);
Collection union = CollectionUtils.union( a, b ); //并集
Collection intersection = CollectionUtils.intersection( a, b ); //交集
Collection disjunction = CollectionUtils.disjunction( a, b ); //析取
Collection subtract = CollectionUtils.subtract( a, b ); //差集
List<String> list2 = new ArrayList<String>();
list1.add("111");
list1.add("222");
list1.add("222")
list1.add("333");
list2.add("444");
list2.add("222");
list2.add("222");
list2.add("555");
Collection ret = CollectionUtils.intersection(list1, list2);
Collection union = CollectionUtils.union( a, b ); //并集
Collection intersection = CollectionUtils.intersection( a, b ); //交集
Collection disjunction = CollectionUtils.disjunction( a, b ); //析取
Collection subtract = CollectionUtils.subtract( a, b ); //差集
CollectionUtils--->org.apache.commons.collections.CollectionUtils
原理上是通过将两个collection转换成mapa和mapb,然后两个map再合并到一个set
中,利用set的自身唯一性,然后遍历这个set,看每个set项在两个map中是否存在
找到了则放入返回集合中,关键这个的强大之处是还能返回相同的两个222,
效率应该还可以.
原理上是通过将两个collection转换成mapa和mapb,然后两个map再合并到一个set
中,利用set的自身唯一性,然后遍历这个set,看每个set项在两个map中是否存在
找到了则放入返回集合中,关键这个的强大之处是还能返回相同的两个222,
效率应该还可以.
import java.util.HashSet;
import java.util.Set;
public class FindDups {
public static void main(String[] args){
Set set1 = new HashSet();
Set set2 = new HashSet();
//set1
set1.add("name");
set1.add("sex");
set1.add("height");
set1.add("weight");
set1.add("size");
//set2
set2.add("name");
set2.add("sex");
set2.add("age");
Set sym = new HashSet(set1);
Set tmp = new HashSet(set1);
sym.retainAll(set2);
tmp.removeAll(set2);
set2.removeAll(set1);
System.out.println("set1&set2:"+sym.size());
System.out.println("set1&set2:"+sym); //set1和set2交集
System.out.println("set1-set2"+"新增数量:"+tmp.size());
System.out.println("set1-set2:"+tmp); //set1和set2差集
System.out.println("set2-set1"+"剔除数量:"+set2.size());
System.out.println("set2-set1:"+set2); //set2和set1差集
}
}
import java.util.Set;
public class FindDups {
public static void main(String[] args){
Set set1 = new HashSet();
Set set2 = new HashSet();
//set1
set1.add("name");
set1.add("sex");
set1.add("height");
set1.add("weight");
set1.add("size");
//set2
set2.add("name");
set2.add("sex");
set2.add("age");
Set sym = new HashSet(set1);
Set tmp = new HashSet(set1);
sym.retainAll(set2);
tmp.removeAll(set2);
set2.removeAll(set1);
System.out.println("set1&set2:"+sym.size());
System.out.println("set1&set2:"+sym); //set1和set2交集
System.out.println("set1-set2"+"新增数量:"+tmp.size());
System.out.println("set1-set2:"+tmp); //set1和set2差集
System.out.println("set2-set1"+"剔除数量:"+set2.size());
System.out.println("set2-set1:"+set2); //set2和set1差集
}
}