繁体   English   中英

ArrayList的ArrayList移除集合

[英]ArrayList of ArrayList remove collection

我有这个ArrayList L [[1,2,3,4,5],[1,2,3,4,5]]的ArrayList和一个简单的ArrayList a [3,4],我必须删除[3,4从L的第二个元素中获得[[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);



}

尝试:

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

问题是这一行:

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

这使得L的第二个List与第一个ListArrayList<Integer> 完全相同 结果,当您从L.get(1)删除两项34 ,似乎您已经两次删除了两项。 这就是为什么你得到输出

[[1, 2, 5], [1, 2, 5]]

您真正想要的是L的第二个List作为第一个List副本 为此,创建一个新的List实例,如下所示:

 L.add(new ArrayList<Integer>(L.get(i-1)));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM