[英]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
与第一个List
的ArrayList<Integer>
完全相同 。 结果,当您从L.get(1)
删除两项3
和4
,似乎您已经两次删除了两项。 这就是为什么你得到输出
[[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.