【发布时间】:2018-08-30 20:15:46
【问题描述】:
我有两个列表。
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]。
实现这一目标的最佳方法是什么?同时遍历两个列表对我来说似乎有点难看。
【问题讨论】:
-
"1 和 2 而不仅仅是 1" - 我不明白,你能发布结果列表吗?
-
人们被否决的方式在这里是不公平的。你只是关闭这个问题,因为它没有很好地表述.. 它需要更清楚地解释。
-
@arthur:对不完全理解问题的答案投反对票是有意义的。根据定义,与问题无关的答案是错误。
-
@arthur 否决不正确的答案到底是什么不公平?例如,starman1979 提供的答案与
list1.removeAll(list2);完全相同,所以 OP 目前使用的是什么。 higz555 提供的答案基本上从每个列表中删除了重复项,但这似乎也不是 OP 想要的。 -
“拒绝投票应该保留在极端情况下。它不能代替沟通和编辑。” stackoverflow.com/help/privileges/vote-down
标签: java arraylist iterator java-stream