gpt4 book ai didi

java - 计算两个重复列表的差异

转载 作者:行者123 更新时间:2023-12-03 01:24:24 24 4
gpt4 key购买 nike

我有两个列表。

List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 2));
List<Integer> list2 = new ArrayList<>(Arrays.asList(2, 3, 4));

我想从 list1 中删除 list2 中包含的元素,删除次数与 list2 中包含的元素完全相同。在上面的示例中:当我们删除列表 1 中存在于列表 2 中的元素时,我们应该得到结果 [1, 2] (仅出现一次 2 应该是从 list1 中删除,因为 list2 仅包含 2 的一个实例。

我尝试使用 list1.removeAll(list2); 但我得到的结果列表仅包含 [1]

实现这一目标的最佳方法是什么?同时迭代两个列表对我来说似乎有点难看。

最佳答案

如果我理解正确的话,您只想从 list1 中删除单个 2 元素,而不是全部。您可以迭代 list2 并尝试从 list1 中删除每个元素。请记住,如果 list2 不能包含重复项,还有比这更有效的方法。

var list1 = new ArrayList<>(List.of(1, 2, 2));
var list2 = List.of(2, 3, 4);

list2.forEach(list1::remove);

list1 现在包含以下内容:

[1, 2]

参见starman1979's answer对于相同的解决方案,但使用 lambda 而不是方法引用。

关于java - 计算两个重复列表的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49410929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com