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

时间:2018-06-12 19:36:11

标签: java arraylist

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

A: {1 3 1 2}
B: {1 3}

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

A: {1 2}

但如果我使用A.removeAll(B),我最终只会使用值 2 ,因为所有重复的值 1 的实例都将从列表{{}中删除1}}。到目前为止,我的解决方案是对A的所有元素使用Iterator,然后使用A的所有元素,如果找到相似的值,则将其从两个列表中删除,直到列表B为空。

有更好的方法吗?

1 个答案:

答案 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]