这两天用到了取集合和数组交集的问题,写了两个方法。代码片段如下:
package com.yuanyuan;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test2 {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>();
list1.add(5);
list1.add(9);
list1.add(12);
List<Integer> list2 = new ArrayList<>();
list2.add(5);
list2.add(9);
list2.add(15);
//List<Integer> list = getIntersection(list1, list2);
List<Integer> list = getIntersection2(list1, list2);
System.out.println(list.toString());//[5, 9]
}
/**
* 取两个集合的交集
* @param <T>
* @param list1
* @param list2
*/
public static <T> List<T> getIntersection(List<T> list1, List<T> list2){
List<T> list = new ArrayList<>();
if (list1 != null && list2 != null) {
for (T t : list1) {
if (list2.contains(t)) {
list.add(t);
}
}
}
return list;
}
public static <T> List<T> getIntersection2(List<T> list1, List<T> list2){
List<T> list = new ArrayList<>();
Map<T, Boolean> map = new HashMap<>();
for (T t : list1) {
map.put(t, false);
}
for (T t : list2) {
if (map.keySet().contains(t)) {
map.put(t, true);
}
}
for (T t : map.keySet()) {
if (map.get(t) == true) {
list.add(t);
}
}
return list;
}
}