ArrayList 的 ArrayList 移除集合
ArrayList of ArrayList remove collection
我有 ArrayList L [[1,2,3,4,5], [1,2,3,4,5]] 的 ArrayList
和一个简单的 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);
}
尝试:
L.get(1).removeAll(a); // remove all elements of a from the second list of L
问题在于线路:
L.add(L.get(i-1));
这使得 L
中的第二个 List
与第一个 ArrayList<Integer>
的实例 完全相同。因此,当您从 L.get(1)
中删除 3
和 4
这两项时,您似乎已将这两项删除两次。这就是为什么你得到输出
[[1, 2, 5], [1, 2, 5]]
您真正想要的是 L
中的第二个 List
成为第一个的 copy。为此,创建一个新的 List
实例,如下所示:
L.add(new ArrayList<Integer>(L.get(i-1)));
我有 ArrayList L [[1,2,3,4,5], [1,2,3,4,5]] 的 ArrayList 和一个简单的 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);
}
尝试:
L.get(1).removeAll(a); // remove all elements of a from the second list of L
问题在于线路:
L.add(L.get(i-1));
这使得 L
中的第二个 List
与第一个 ArrayList<Integer>
的实例 完全相同。因此,当您从 L.get(1)
中删除 3
和 4
这两项时,您似乎已将这两项删除两次。这就是为什么你得到输出
[[1, 2, 5], [1, 2, 5]]
您真正想要的是 L
中的第二个 List
成为第一个的 copy。为此,创建一个新的 List
实例,如下所示:
L.add(new ArrayList<Integer>(L.get(i-1)));