我有两个ArrayList<Integer>
如下:
原版的: 12, 16, 17, 19, 101
已选择: 16, 19, 107, 108, 109
我想对这些列表进行区别,以使最终我有两个列表:
加: 108,109,107
去掉: 12, 17, 101
原始列表和选定列表的长度各不相同,一个列表可以比另一个列表大/小
List<Integer> original = Arrays.asList(12,16,17,19,101);
List<Integer> selected = Arrays.asList(16,19,107,108,109);
ArrayList<Integer> add = new ArrayList<Integer>(selected);
add.removeAll(original);
System.out.println("Add: " + add);
ArrayList<Integer> remove = new ArrayList<Integer>(original);
remove.removeAll(selected);
System.out.println("Remove: " + remove);
输出:
Add: [107, 108, 109]
Remove: [12, 17, 101]
使用Collection的removeAll方法。参见javadocs。
我正在尝试使用Java8流来组合列表。如何从两个现有列表中获得“对称差异列表”(只存在于一个列表中的所有对象)。我知道如何获取intersect列表,也知道如何获取union列表。 示例代码:
我有一个带有Person对象的数据库表。我的网络服务接收一个Person对象列表来更新这个Person表。我的应用程序现在包含两个列表: 我想遍历这些列表,并创建一个新列表,用于更新Person表。 fName和lName用于识别现有记录。下面是一个例子。 现在的 乔,布洛格斯,18岁,joe@me.com 简,布洛格斯,21岁,jane@me.com 弗洛,布洛格斯,25岁,flo@me.com
问题内容: 我有两个清单,和。我需要的物品不在其中。 我只想得到[4,5]-l1中只有新值。 我可以不用迭代吗? 问题答案: 简短的回答,是的:,但这不会保持秩序。 长答案,不,因为在内部CPU总是会迭代。但如果你使用的是迭代将进行高度优化,并会快那么你的列表解析(更不用说检查会员是 多 快带套然后列出)。