Java - 在浏览时将元素添加到ArrayList

Kha*_*ani 1 java

问题是我有这个方法createNode()在树中创建一个节点,然后如果它是一个离开节点,它将它添加到一个ArrayList<Tree> treeLeaves,我在浏览treeLeavesArrayList 时调用这个方法,如下所示:

    Iterator<Tree> iter = treeLeaves.iterator();
    while (iter.hasNext()) {
        iter.next().createNode();
    }
Run Code Online (Sandbox Code Playgroud)

或者像这样:

    For (Tree cursor : treeLeaves) {
        cursor.createNode();
    }
Run Code Online (Sandbox Code Playgroud)

但我一直有这个例外:

    Exception in thread "main" java.util.ConcurrentModificationException
Run Code Online (Sandbox Code Playgroud)

即使把下面的代码放在一起snychronized(treeLeaves){}.PS:我不知道这是否有用但是; 这是一棵n树.

Ya *_*ang 5

你需要一个ConcurrentList ......

http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/CopyOnWriteArrayList.html

读取Java的JDK中是否有并发List?

此外,您无法在浏览时更改arraylist ...而是可以使用tempoaray内存中的缓冲区编辑当前列表(如果您愿意).