【问题标题】:Intersection of Two Dimensional ArrayList in JavaJava中二维ArrayList的交集
【发布时间】:2016-09-03 12:14:25
【问题描述】:

我想在 ArrayList 中将 list1、list2 和 list3 相交。 所以,我想将 arrayList2D 的 ArrayLists 相交。 arrayList2D 可以包含(最多)六个 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);

【问题讨论】:

  • 您要创建多维数组列表吗?
  • 你的问题不太清楚。

标签: java arraylist multidimensional-array intersection


【解决方案1】:

好的,根据我的理解,您需要与 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) 以获得期望结果

【讨论】:

  • 使用List.retainAll()可以让它更优雅一点。有关详细信息,请参阅文档。
  • 是的 Ole 我已经更新了我的答案,它增加了可重复性并删除需要声明额外列表,但从性能的角度来看,它并没有太大差异,因为内部 retainAll 也在 batchRemove 中执行循环迭代方法调用..任何好建议:)
猜你喜欢
  • 2016-03-02
  • 2011-07-14
  • 1970-01-01
  • 2012-06-23
  • 2017-03-11
  • 2017-01-18
  • 2012-11-18
  • 2020-10-04
相关资源
最近更新 更多