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

标签 java

问题是我有这个方法createNode()在树中创建一个节点,然后如果它是叶节点,则将其添加到 ArrayList<Tree> treeLeaves 中, 我在浏览 treeLeaves 时调用了这个方法ArrayList 像这样:

    Iterator<Tree> iter = treeLeaves.iterator();
    while (iter.hasNext()) {
        iter.next().createNode();
    }

或者像这样:

    For (Tree cursor : treeLeaves) {
        cursor.createNode();
    }

但我一直有这个异常(exception):

    Exception in thread "main" java.util.ConcurrentModificationException

即使将下面的代码放在 snychronized(treeLeaves){} 中集团。 P.S:我不知道这是否有用但是;这是一棵 n 树。

最佳答案

你需要一个 ConcurrentList...

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

阅读Is there a concurrent List in Java's JDK?

此外,您不能在浏览数组列表时更改它...相反,您可以根据需要使用 tempoaray 内存中的缓冲区来编辑当前列表。

关于Java - 在浏览时将元素添加到 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34521810/

相关文章:

java - 遵循 mkyong 指南后,Postgresql executeBatch 无法正常工作

Java 可选<List<T>> 到 Map 转换

java - 默认的maven-release-plugin在哪里定义的?

java - 将 JPA AttributeConverter 用于 boolean Y/N 字段 : "Unable to render boolean literal value"

java - 将一个长字符串拆分为指定大小的较小字符串

java - 恢复视野的秘诀

java - 如何从适配器中删除处理程序

java - 当清除和重新加载java Hashtable时,内存是如何管理的

java - 使用 Hibernate 中的现有表创建历史表

java - 12 因素应用程序 - 依赖泄漏