import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
/**
* 数组使用工具类
*/
public class ArrayUtil {
/**
* 获取两个list的并集
* @param list1
* @param list2
* A={1,2,3} unionAll B={1,5,6} => C={1,2,3,1,5,6}
* @return List 返回新的List
*/
@SuppressWarnings("unchecked")
public static List unionAll(List list1, List list2) throws Exception{
List list = new ArrayList();
if(list1 != null){
list.addAll(list1);
}
if(list2 != null ){
list.addAll(list2);
}
return list;
}
/**
* 获取两个list无重复元素交集
* 注意:需要重写List集合中对象的hashcode和equals方法
* A={1,2,3} intersect B={1,1,5,6} => C={1}
* @param list1
* @param list2
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public static List intersect(List list1, List list2) throws Exception{
List list = new ArrayList();
if(list1 != null && list2 != null){
Set set = new LinkedHashSet();
set.addAll(list1);
set.retainAll(list2);
list = new ArrayList(set);
}
return list;
}
/**
* 获取list2在list1中的无重复补集
* 注意:需要重写List集合中对象的hashcode和equals方法
* A={2,3} comple B={1,1,2,6} => C={1,6}
* @param list1
* @param list2
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public static List comple(List list1, List list2) throws Exception{
Set set = new LinkedHashSet();
set.addAll(list1);
set.removeAll(intersect(list1, list2));
return new ArrayList(set);
}
}
集合求取并集交集补集
最新推荐文章于 2024-03-24 19:25:39 发布