我想在ArrayList中交叉 list1 , list2 和 list3 。 所以,我想要交叉 arrayList2D 的ArrayLists。 arrayList2D 可以包含(max)六个ArrayList。我该怎么办?
这两个列表的交集。
public <T> List<T> intersection(List<T> list1, List<T> list2) {
List<T> list = new ArrayList<T>();
for (T t : list1) {
if(list2.contains(t)) {
list.add(t);
}
}
return list;
}
那是我的代码
ArrayList<ArrayList<Integer>> arrayList2D=new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> list1 = new ArrayList<Integer>();
list1.add(0);
list1.add(8);
list1.add(15);
list1.add(26);
list1.add(124);
ArrayList<Integer> list2 = new ArrayList<Integer>();
list2.add(0);
list2.add(7);
list2.add(17);
list2.add(26);
list2.add(178);
ArrayList<Integer> list3 = new ArrayList<Integer>();
list3.add(4);
list3.add(8);
list3.add(12);
list3.add(26);
list3.add(128);
arrayList2D.add(list1);
arrayList2D.add(list2);
arrayList2D.add(list3);
答案 0 :(得分:1)
好的,按照我的理解,你需要将所有的arraylists包含在arrayList2D下。
public <T> List<T> intersection(List<T> list1, List<T> list2) {
list1.retainAll(list2);
return list1;
}
制作其他需要调用的方法
public static List<Integer> getAllIntersection(ArrayList<ArrayList<Integer>> arrayList2D) {
List<Integer> finalList = arrayList2D.get(0);
for (int i=1; i<arrayList2D.size(); i++) {
finalList=intersection(finalList,arrayList2D.get(i));
}
System.out.println("firstList"+finalList);
return finalList;
}
然后最后调用getAllIntersection(arrayList2D)
来获得欲望结果