Java中的列表差异

46

我有两个 ArrayList<Integer>,内容如下:

原始列表: 12, 16, 17, 19, 101

选中列表: 16, 19, 107, 108, 109

我想对这两个列表进行差异处理,最终得到两个列表:

添加: 108, 109, 107

删除: 12, 17, 101

原始列表和选中列表的长度可能不同,其中一个可能比另一个长或短。


所以基本上你想要消除出现在两个列表中的值?这些列表是否总是按照你的示例排序? - Asaph
3
“Add: 108,109” 应该翻译为 “添加:108,109”,而问题的意思是是否应该将其改为“添加:107,108,109”? - Asaph
3
我不明白这两个集合是交集还是并集。这两个集合的交集应该是16,19 - Mark Peters
@Asaph 是的,应该是这样的。我的错误。 - learn_plsql
7
你不是在要求交集 - 修改标题。 - Radu Simionescu
标题有误导性,您要求的是集合差,而不是交集或并集。 - Ahmad Shahwan
11个回答

0

使用Java 8+流:

List<Integer> result = original.stream()
  .distinct()
  .filter(selected::contains)
  .collect(Collectors.toList());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接