'java.util.ConcurrentModificationException'에 해당되는 글 1건

Collection내의 데이터 무결성에 의하여 발생하는 에러. 예를 들어 Collection을 참조하고 있는 iter를 이용하여 remove를 하게 되면 데이터 무결성을 지키기 위하여 발생시키는 에러

해결법: Snapshot iterator를 사용

에러 발생가능한 코드
            for(AbstractNode node:mEntries)
            {
                if (node instanceof AbstractNodeCollection)
                {
                    ((AbstractNodeCollection)node).removeChildren();
                }
               
                mEntries.remove(node);
            }

Snapshot iterator를 이용한 코드
            AbstractNode node;
            Iterator<AbstractNode> iter = new ArrayList<AbstractNode>(mEntries).iterator();
            while(iter.hasNext())
            {
                node = iter.next();
                if (node instanceof AbstractNodeCollection)
                {
                    ((AbstractNodeCollection)node).removeChildren();
                }
                mEntries.remove(node);
            }

Posted by zennken
1

zennken

달력