我有一个问题,我正在创建一个数组列表并向其中添加多个数组列表。在程序的某些时候,我需要从一个中央列表中删除这些列表。我一直在使用 removeAll(); 但这会删除一个元素的所有实例。例如,arraylist 可以包含 (1,2,3,4,5),并且可以将列表 (1,2,3) 添加到其中。然而,当您删除此列表时,结果列表现在包含 (4,5),而希望它包含 (1,2,3,4,5)。那怎么能做到呢?谢谢你的帮助。
问问题
2337 次
1 回答
1
听起来你应该只使用remove
而不是removeAll
. 您可以将其放入循环中以从集合中删除所有元素:
ArrayList<Integer> bigList = new ArrayList<Integer>();
// Put multiple smaller lists into big list
bigList.addAll(list1);
bigList.addAll(list2);
bigList.addAll(list3);
// Remove list2's elements from bigList
for (Integer i : list2) {
bigList.remove(i);
}
更新:
可运行版本:
import java.util.*;
public class RemoveTest {
public static void main(String[] args) {
List<Integer> list1 = Arrays.asList(1, 2, 3);
List<Integer> list2 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list3 = Arrays.asList(9);
ArrayList<Integer> bigList = new ArrayList<Integer>();
// Put multiple smaller lists into big list
bigList.addAll(list1);
bigList.addAll(list2);
bigList.addAll(list3);
// Remove list2's elements from bigList
for (Integer i : list2) {
bigList.remove(i);
}
System.out.println(bigList);
// Result:
// [1, 2, 3, 9]
}
}
于 2013-03-20T02:34:57.030 回答