我有两个列表可能如下所示:
A: {1 3 1 2}
B: {1 3}
我想从列表B
中删除列表A
的元素,最后得到:
A: {1 2}
但如果我使用A.removeAll(B)
,我最终只会使用值 2 ,因为所有重复的值 1 的实例都将从列表{{}中删除1}}。到目前为止,我的解决方案是对A
的所有元素使用Iterator,然后使用A
的所有元素,如果找到相似的值,则将其从两个列表中删除,直到列表B
为空。
有更好的方法吗?
答案 0 :(得分:6)
您不需要使用嵌套循环
在b
上循环,其中包含要在a
中删除的值
使用List.remove(Object)
代替List.removeAll(Collection)
它将删除第一个元素等于参数而不是所有元素。
List<Integer> a = new ArrayList<>(Arrays.asList(1, 3, 1, 2));
List<Integer> b = Arrays.asList(1, 3);
for (Integer currentInt : b) {
a.remove(currentInt);
}
System.out.println(a);
输出:
[1,2]