Проблема в том, что у меня есть этот метод createNode()
, который создает узел в дереве, а затем, если это уездный узел, он добавляет его в ArrayList<Tree> treeLeaves
, и я делаю вызов этот метод во время просмотра treeLeaves
ArrayList, как это:Java - добавление элементов в массив ArrayList при просмотре его
Iterator<Tree> iter = treeLeaves.iterator();
while (iter.hasNext()) {
iter.next().createNode();
}
Или так:
For (Tree cursor : treeLeaves) {
cursor.createNode();
}
Но я держу имея это исключение:
Exception in thread "main" java.util.ConcurrentModificationException
Даже если надеть коды ниже в блоке snychronized(treeLeaves){}
. P.S: Я не знаю, полезно ли это или нет; это n-Tree.
Я считаю, что есть еще одна ключевая информация, которую вы не показываете: на основании того, что вы показали нам, вы не меняете список ('treeLeaves') при его итерации. Вышеприведенный код не должен вызывать 'ConcurrentModificationException' (по крайней мере, не из' treeLeaves') –
@AdrianShum Я сказал ниже, что метод '.createNode()' добавляет узел, а если это уездный узел, он добавляет его в 'treeLeaves '. Разве это еще не исчерпывающе? –
oops, я понимаю, что вы там имеете в виду. Coz это не выглядит так нормально, поэтому я пропустил вашу точку там. –