我有两个列表ListOne 和ListTwo。 我必须找出 ListOne 中不存在于 ListTwo 中的所有元素。 相似地 我必须找出 ListTwo 中不存在于 ListOne 中的所有元素。
我的下面的代码可以正常工作,但我认为可能有更好的方法
List<Long> listOne=...Some valid values;
List<Long> listTwo=...Some valid values;
List<Long> listThree=new ArrayList<Long>();
List<Long> listFour=new ArrayList<Long>();
for (Long id: ListOne) {
if(!listTwo.contains(id)){
listThree.add(id);
}
}
for (Long id: ListTwo) {
if(!listOne.contains(id)){
listFour.add(id);
}
}
最佳答案
作为 Lino 答案的替代方案,您还可以以函数方式重写代码:
List<Long> listOneButListTwoElements = listOne.stream()
.filter(l-> !listTwo.contains(l))
.collect(Collectors.toList());
List<Long> listTwoButListOneElements = listTwo.stream()
.filter(l-> !listOne.contains(l))
.collect(Collectors.toList());
关于java - 列表项之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47136874/