ConcurrentModificationException(list <object [] =“”>)或其他数据结构,用于&#34;搜索/比较和过滤&#34; </object>

时间:2014-05-23 13:53:00

标签: java arrays list object

我的主要问题是“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");
            }
        }

1 个答案:

答案 0 :(得分:1)

在迭代allIds.remove(...)时,您可能无法调用allIds,这会引发ConcurrentModificationException。相反,您必须使用显式迭代器并调用其remove方法:

for (Iterator<Object[]> it = allIds.iterator(); it.hasNext();) {
    Object[] comparePrivateIdS = it.next();
   //...
   if(...) it.remove();
}