我有这个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);
}
答案 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
中的第二个L
与ArrayList<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}}