繁体   English   中英

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

[英]Compare a Dynamic ArrayList with ArrayList! and remove the elements which are not present in Dynamic array

我有两个ArrayListscontactModelslist

contactModels是一个动态数组列表,我需要比较两个列表并删除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));
       }

  }

但是我做不到。

您不是要测试contactModels的项目是否不在list 相反,您正在测试contactModels存在的索引项是否与list相同索引的项具有不同的ID。

仅当两个集合都根据ID进行排序并且contactModels的条目至少与list一样多时,这才起作用。

是这样吗? 否则,这可能是您的问题。

如果您的收藏hashcode的项目具有equals且正确实现的hashcode ,并且如果它们的ID相等,则它们相等,则可以使用类似的方法

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

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

如果contactModel具有非原始元素,则可以覆盖equals和哈希码以告诉您的对象将在什么基础上相等。

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

因此,现在您不需要其他方法也可以将其删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM