我的主要问题是“ConcurrentModificationException”。 我想在找到它时删除一行。但删除行后我的列表没有更新。所以我得到了这个缺陷。我不知道如何解决它。我已经在这里阅读了谷歌,一些书籍,但我不知道如何用列表中的对象[]解决它....这对我来说很重要
或者使用另一个数据结构进行排序和搜索是否更好?如果是,哪一个会没问题?(列表对象[]中有很多数据)如何将其转换为该数据结构? / p>
对不起初学者的问题...... 感谢您的帮助!
List<Object[]> allIds
是一个参数;
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");
}
}
答案 0 :(得分:1)
在迭代allIds.remove(...)
时,您可能无法调用allIds
,这会引发ConcurrentModificationException
。相反,您必须使用显式迭代器并调用其remove方法:
for (Iterator<Object[]> it = allIds.iterator(); it.hasNext();) {
Object[] comparePrivateIdS = it.next();
//...
if(...) it.remove();
}