我有两个ArrayLists
,contactModels
和list
。
contactModels
是动态Arraylist,我需要比较两个列表并删除list
中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));
}
}
但我无法实现它。
答案 0 :(得分:1)
您没有测试contactModels
中list
中的项目是否不存在。相反,您正在测试contactModels
中存在的索引处的项目是否与list
中相同索引处的项目具有相同的ID。
只有当两个集合都按照id进行排序,并且contactModels至少具有与列表一样多的条目时,这才有效。
那是你的情况吗?否则这可能是你的问题。如果您的馆藏中的项目equals
和hashcode
已正确实施,并且如果其ID相等则您可以使用此类内容
for (<TypeOfYourItems> item : list)
{
if(!contactModels.contains(item))
{
databaseadapter.removeContact(item);
}
}
答案 1 :(得分:0)
@Praneeth:Java提供了API。所以你可以使用它。 “list.removeAll(contactModels);”
如果contactModel具有非原始元素,那么您可以覆盖equals和hash代码以告知您的对象将在何种基础上相等。
现在,您的列表将仅包含联系模型中不存在的唯一元素。
所以现在你也不需要其他方法来删除它。