Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将动态ArrayList与ArrayList进行比较!并删除动态数组中不存在的元素_Java_Performance_Arraylist - Fatal编程技术网

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

Java 将动态ArrayList与ArrayList进行比较!并删除动态数组中不存在的元素,java,performance,arraylist,Java,Performance,Arraylist,我有两个数组列表,联系人模型和列表 contactModels是一个动态数组列表,我需要比较这两个列表并删除list中的元素,contactModels(dynamicacarraylist)中不存在这些元素 我尝试了嵌套循环,如下所示: for (int i = 0; i < list.size(); i++) { if(!contactModels.get(i).getEmpID().equals(list.get(i).getEmpID()))

我有两个
数组列表
联系人模型
列表

contactModels
是一个动态数组列表,我需要比较这两个列表并删除
list
中的元素,
contactModels
(dynamicacarraylist)中不存在这些元素

我尝试了嵌套循环,如下所示:

  for (int i = 0; i < list.size(); i++)
  {    
    if(!contactModels.get(i).getEmpID().equals(list.get(i).getEmpID()))
       {
        databaseadapter.removeContact(contactModels.get(i));
       }

  }
for(int i=0;i

但我无法实现。

您不是在测试
contactModels
中的项目是否不在
列表中。相反,您正在测试
contactModels
中索引中的项目是否与
列表中相同索引中的项目具有相同的id

只有当两个集合都根据id排序,并且contactModels的条目至少与列表中的条目相同时,此选项才有效

你就是这样吗?否则这可能是你的问题

如果集合中的项正确实现了
equals
hashcode
,并且如果它们的id相等,则它们是相等的,则可以使用类似的方法

for (<TypeOfYourItems> item : list)
  {    
    if(!contactModels.contains(item))
       {
        databaseadapter.removeContact(item);
       }
  }
用于(项目:列表)
{    
如果(!contactModels.contains(项目))
{
databaseadapter.removeContact(项);
}
}

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

若contactModel具有非原语元素,那个么您可以重写equals和哈希代码,以告知对象在什么基础上是相等的

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


因此,现在您不需要使用其他方法来删除它。

您的代码正常吗?如果没有,怎么了?我可以更新联系人!已存在于列表中,但我无法删除不在动态数组列表中的联系人!您可以尝试removeAll(集合c)方法。我的contactModels是一个动态数组列表,它的条目会相应地改变!它可能等于或小于列表@Pranethkumar那么你不应该和indizes一起工作。。。“列表”中的索引可能甚至不存在于“contactModels”@AndréR中。我只是使用了类似的东西,它通过使用contains方法工作!感谢您指导方法原始问题中的代码显示,对于列表中不在contactModels中的每个元素,需要调用databaseadapter上的方法。。。在这种情况下,“removeAll”没有帮助。您可以通过列表,一次就可以通过,除非任何第三方未提供此列表,否则您可以将其修改为接受列表,并在完成此操作后立即通过。