将Dynamic ArrayList与ArrayList进行比较! 并删除动态数组中不存在的元素
我有两个ArrayLists
, contactModels
和list
。
contactModels
是一个动态Arraylist,我需要比较两个列表并删除列表中的元素,这些元素在contactModels
(DynamicArrayList)中不存在。
我试过嵌套循环,这个:
for (int i = 0; i < list.size(); i++) { if(!contactModels.get(i).getEmpID().equals(list.get(i).getEmpID())) { databaseadapter.removeContact(contactModels.get(i)); } }
但我无法实现它。
您没有测试contactModels
的项目是否不在list
。 相反,您正在测试contactModels
存在的索引处的项目是否与list
相同索引处的项目具有相同的ID。
这只有在两个集合都按照id进行排序并且contactModels至少具有与list相同的条目时才有效。
那是你的情况吗? 否则这可能是你的问题。
如果你的集合中的项目有正确实现的equals
和hashcode
,并且如果它们的id相等则相等,你可以使用这样的东西
for ( item : list) { if(!contactModels.contains(item)) { databaseadapter.removeContact(item); } }
@Praneeth:Java提供了API。 所以你可以使用它。 “list.removeAll(contactModels);”
如果contactModel具有非原始元素,那么您可以覆盖equals和hash代码以告知您的对象将在何种基础上相等。
现在,您的列表将仅包含联系模型中不存在的唯一元素。
所以现在你也不需要有其他方法来删除它。