Collection내의 데이터 무결성에 의하여 발생하는 에러. 예를 들어 Collection을 참조하고 있는 iter를 이용하여 remove를 하게 되면 데이터 무결성을 지키기 위하여 발생시키는 에러
해결법: Snapshot iterator를 사용
에러 발생가능한 코드
Snapshot iterator를 이용한 코드
해결법: Snapshot iterator를 사용
에러 발생가능한 코드
for(AbstractNode node:mEntries)
{
if (node instanceof AbstractNodeCollection)
{
((AbstractNodeCollection)node).removeChildren();
}
mEntries.remove(node);
}
{
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);
}
Iterator<AbstractNode> iter = new ArrayList<AbstractNode>(mEntries).iterator();
while(iter.hasNext())
{
node = iter.next();
if (node instanceof AbstractNodeCollection)
{
((AbstractNodeCollection)node).removeChildren();
}
mEntries.remove(node);
}