我有两个列表可能如下所示:
A: {1 3 1 2}
B: {1 3}
我想从列表A
中删除列表B
的元素,最终得到:
A: {1 2}
但是如果我使用A.removeAll(B)
我最终只会得到值2,因为值1的所有重复实例都将从列表A
中删除。到目前为止,我的解决方案是对A
的所有元素使用迭代器,然后对B
的所有元素使用迭代器,如果我找到类似的值,则将其从两个列表中删除,直到列表B
为空。
有没有更好的方法?
不需要使用嵌套循环。
循环访问包含要在a
中删除的值的b
和 使用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]