关于java:ConcurrentModificationException(list< object []>)或其他用于“搜索/比较和过滤”的数据结构

ConcurrentModificationException(list<object []>) or another datastructur for “searching/comparing and filtering”

本问题已经有最佳答案,请猛点这里访问。

我的主要问题是"并发修改例外"。找到一行后,我想删除它。但是我的列表在删除行后没有更新。所以我得到了缺陷。我不知道怎么解决。我已经在这里读过了,谷歌,一些书,但我不知道如何用列表中的对象来解决它。对我来说太多了

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

对于初学者的问题很抱歉…谢谢帮助解答!

List allIds为参数;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
            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时,不能调用allIds.remove(...),这会抛出ConcurrentModificationException。相反,必须使用显式迭代器并调用其移除方法:

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