将Dynamic ArrayList与ArrayList进行比较! 并删除动态数组中不存在的元素

我有两个ArrayListscontactModelslist

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相同的条目时才有效。

那是你的情况吗? 否则这可能是你的问题。

如果你的集合中的项目有正确实现的equalshashcode ,并且如果它们的id相等则相等,你可以使用这样的东西

 for ( item : list) { if(!contactModels.contains(item)) { databaseadapter.removeContact(item); } } 

@Praneeth:Java提供了API。 所以你可以使用它。 “list.removeAll(contactModels);”

如果contactModel具有非原始元素,那么您可以覆盖equals和hash代码以告知您的对象将在何种基础上相等。

现在,您的列表将仅包含联系模型中不存在的唯一元素。

所以现在你也不需要有其他方法来删除它。