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