Java ConcurrentModificationException(列出<;object[]>;)或另一个用于";“搜索/比较和筛选”;

Java ConcurrentModificationException(列出<;object[]>;)或另一个用于";“搜索/比较和筛选”;,java,arrays,list,object,Java,Arrays,List,Object,我的主要问题是“ConcurrentModificationException”。 找到一行后,我要删除该行。但删除该行后,我的列表不会更新。所以我发现了这个缺陷。我不知道怎么解决它。我已经在这里读过了,谷歌,一些书,但我不知道如何用列表中的object[]来解析它。。。。这对我来说太多了 或者最好使用另一个数据结构进行排序和搜索,如果是,哪一个更好?(列表对象[]中有很多数据),我如何将其转换为该数据结构 对不起,初学者的问题。。。 谢谢你的帮助 列出所有ID是一个参数

我的主要问题是“ConcurrentModificationException”。 找到一行后,我要删除该行。但删除该行后,我的列表不会更新。所以我发现了这个缺陷。我不知道怎么解决它。我已经在这里读过了,谷歌,一些书,但我不知道如何用列表中的object[]来解析它。。。。这对我来说太多了

或者最好使用另一个数据结构进行排序和搜索,如果是,哪一个更好?(列表对象[]中有很多数据),我如何将其转换为该数据结构

对不起,初学者的问题。。。 谢谢你的帮助

列出所有ID
是一个参数

            for (Object[] privateIds : allIDs) {


        for (Object[] comparePrivateIdS : allIds) {

            if (privateIds[1].equals(comparePrivateIdS[1]) && privateIds[2].equals(comparePrivateIdS[2])) {
                System.out.print("ok");

                int index = allIds.indexOf(comparePrivateIdS);
                allIds.remove(comparePrivateIdS);

            } else {
                System.out.println("Do Nothing");
            }
        }

您不能调用
allIds.remove(…)
在迭代
allIds
时,会抛出
ConcurrentModificationException
。相反,必须使用显式迭代器并调用其remove方法:

for (Iterator<Object[]> it = allIds.iterator(); it.hasNext();) {
    Object[] comparePrivateIdS = it.next();
   //...
   if(...) it.remove();
}
for(Iterator it=allIds.Iterator();it.hasNext();){ Object[]comparePrivateIdS=it.next(); //... 如果(…)它。删除(); } 请参见