如何找到两个ArrayList之间的差异<;整数>;在Java中不使用Java8流?
这可能看起来像复制品,但不是,请通读结尾。如何找到两个ArrayList之间的差异<;整数>;在Java中不使用Java8流?,java,android,arrays,Java,Android,Arrays,这可能看起来像复制品,但不是,请通读结尾。 一些上下文:我正在构建一个连接到api的android应用程序。家具对象上有一个“Finishs”复选框,当我更新Finishs时,我必须将要删除的Finishs(复选框)发送回后端要删除的完成:[]并在数组中传递这些ID,同时添加完成是完成:[]。问题是,我想找到一种方法来区分由复选框生成的两个列表,旧列表和更新列表。因此,我可以填充要删除的完成:[] 我不能使用Java8流,因为我的API最低级别是15 当我尝试list.contains(list
一些上下文:我正在构建一个连接到api的android应用程序。家具对象上有一个“Finishs”复选框,当我更新Finishs时,我必须将要删除的Finishs(复选框)发送回后端<代码>要删除的完成:[]并在数组中传递这些ID,同时添加完成是
完成:[]
。问题是,我想找到一种方法来区分由复选框生成的两个列表,旧列表和更新列表。因此,我可以填充要删除的完成:[]
我不能使用Java8流,因为我的API最低级别是15
当我尝试list.contains(list2)时,它告诉我“list可能不包含list类型的对象
我只想返回第一个列表中但不在第二个列表中的项目,而不是1:1的比较。list.contains()
采用与列表
相同类型的元素,即列表
允许您调用list.contains(“某些字符串”)
,但不能将另一个列表
传递到.contains()
可以工作的示例函数如下所示:
public boolean <T> listContains(List<T> list1, List<T> list2) {
for (T t : list1) { // iterate through all elements of list1
if (list2.contains(list1)) return true; // check to see if list2 contains each element
}
return false; // return false if no matches found
}
这将删除
list1
中包含在list2
中的所有项目。我在其中编辑了问题和答案dupe@Compass第一个答案仍然是一个很好的方法,只有一件事需要提及:如果原始的列表
包含重复项,将其转换为集
将消除它们。
list1.removeIf(item -> list2.contains(item));