仅从两个 ArrayList 中删除重复值的第一个实例



我有两个列表可能如下所示:

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]

最新更新