LinkedHashMap-> java.util.ConcurrentModificationException

问题描述 投票:0回答:1

执行以下代码时出现ConcurrentModificationException:

    public void refreshAvailableCaseSettings() throws Exception {
        LinkedHashMap<Integer, CaseSetting> cases = getAvailableCases();
        /* java.util.ConcurrentModificationException even after trying entryset()
        for(Map.Entry<Integer, CaseSetting> entry : cases.entrySet()){
            entry.getValue().refresh(false);
        }
        */

        // java.util.ConcurrentModificationException
        Iterator casesIterator = cases.values().iterator();
        while (casesIterator.hasNext()) {
            CaseSetting caseSetting = casesIterator.next();
            caseSetting.refresh(false);
        }
    }

错误:

   java.util.ConcurrentModificationException
    at java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719)
    at java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:752)
    at java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:750)

我不是通过添加或删除元素来修改地图。请在这里帮助我了解问题。

谢谢!

linkedhashmap concurrentmodification
1个回答
0
投票

refresh的功能是什么?据我了解,您之所以会得到这些,仅仅是因为您在迭代时修改了HashMap,我以前在地图上放置东西时会遇到这些错误,这意味着尺寸正在增加。

此外,您还需要考虑所有问题,例如CaseSetting

© www.soinside.com 2019 - 2024. All rights reserved.