方案1:对数据库而言可以利用内联查询取交集
方案2:可以使用位图索引,大数据两查抄去交集
方案3:取少的集合做排序(快排都可以),另外一个数组二分查找
方案4:取少的集合做HashMap,另外一个数组做Hash查找
方案5:Java ArrayList 自带Api 请参照如下部分
public class ListApp {
public static void main(String[] args) {
listAll();
listRetainAll();
listRemoveAll();
}
/**
* 求并集
*/
public static void listAll() {
List<String> list1 = new ArrayList<String>();
list1.add("A");
list1.add("B");
List<String> list2 = new ArrayList<String>();
list2.add("C");
list2.add("B");
// 2个集合的并集
list1.addAll(list2);
System.out.println("并集:" + list1);
}
/**
* 求交集
*/
public static void listRetainAll() {
List<String> list1 = new ArrayList<String>();
list1.add("A");
list1.add("B");
List<String> list2 = new ArrayList<String>();
list2.add("C");
list2.add("B");
// 2个集合的并集
list1.retainAll(list2);
System.out.println("交集:" + list1);
}
/**
* removeAll 差集
*/
public static void listRemoveAll() {
List<String> list1 = new ArrayList<String>();
list1.add("A");
list1.add("B");
List<String> list2 = new ArrayList<String>();
list2.add("C");
list2.add("B");
// 2个集合的并集
list1.removeAll(list2);
System.out.println("差集:" + list1);
}
}