ArrayList的ArrayList删除集合

时间:2015-01-14 18:00:55

标签: java arraylist

我有这个ArrayList的ArrayList L [[1,2,3,4,5],[1,2,3,4,5]] 和一个简单的ArrayList a [3,4] 我必须从L的第二个元素中删除[3,4]以获得[[1,2,3,4,5],[1,2,5]]

  public static void main(String[] args) {


    ArrayList< ArrayList<Integer> > L = new ArrayList< ArrayList<Integer> >();
    ArrayList<Integer> l1 = new ArrayList<Integer>();
    l1.add(1);
    l1.add(2);
    l1.add(3);
    l1.add(4);
    l1.add(5);

    L.add(l1);

    ArrayList<Integer> a = new ArrayList<Integer>();
    a.add(3);
    a.add(4);

    for(int i=1; i<2; i++)
    {
        L.add(L.get(i-1));
        if(L.get(i).containsAll(a))
        {  //System.out.println("OK");
            L.get(i).removeAll(a);
        }

    }
    System.out.println(L);



}

2 个答案:

答案 0 :(得分:2)

尝试:

L.get(1).removeAll(a); // remove all elements of a from the second list of L

答案 1 :(得分:1)

问题在于:

L.add(L.get(i-1));

这使List 中的第二个LArrayList<Integer>的第一个3完全相同。因此,当您从4中移除这两项L.get(1)[[1, 2, 5], [1, 2, 5]] 时,您似乎已将两项删除了两次。这就是你得到输出

的原因
List

您真正想要的是L中的第二个List成为第一个副本。为此,请创建一个新的 L.add(new ArrayList<Integer>(L.get(i-1))); 实例,如下所示:

{{1}}