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

dea*_*n44 0 java arraylist

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

A: {1 3 1 2}
B: {1 3}
Run Code Online (Sandbox Code Playgroud)

我想B从列表中删除列表元素,A最后得到:

A: {1 2}
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用,A.removeAll(B)我将只得到值2,因为值1的所有重复实例将从列表中删除A.到目前为止,我的解决方案是对所有元素使用迭代器A,然后使用所有元素,B如果我找到类似的值,则从两个列表中删除它,直到列表B为空.

有没有更好的方法呢?

dav*_*xxx 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);
Run Code Online (Sandbox Code Playgroud)

输出:

[1,2]