当我定义为成员变量时为什么会有ConcurrentModificationException

问题描述

我花了很多时间调试程序,但失败了。我仍然想知道为什么我项目中的**List<TreeNode> list = new ArrayList<>(); **不能成为成员变量。当我定义它为运行时的成员变量时,会出现一个错误。我知道,因为我使用了“增强的”功能,所以容器无法更改,但是为什么我将其定义为局部变量,项目运行良好,所以我阅读了ArrayList部分源代码是因为modCount != expectedModCount。但是为什么List<TreeNode> list = new ArrayList<>();成为局部变量却运行良好。 我的代码如下,谢谢。

public class GenerateTrees {
    //List<TreeNode> list = new ArrayList<>();  when defined there it's wrong 
    public List<TreeNode> generateTrees(int n) {
        if(n == 0){
            return new ArrayList<TreeNode>();
        }
        return createTrees(1,n);
    }
    public  List<TreeNode> createTrees(int start,int end){
     List<TreeNode> list = new ArrayList<>(); //when defined there it's good
       if(start > end){
           list.add(null);
           return list;
       }
        for (int i = start; i <= end; i++) {
            List<TreeNode>leftNodeList = createTrees(start,i - 1);
            List<TreeNode>righhtNodeList = createTrees(i + 1,end);
            for (TreeNode leftnode : leftNodeList) {
                for (TreeNode rightnode : righhtNodeList) {
                    TreeNode treeNode = new TreeNode(i);
                    treeNode.left = leftnode;
                    treeNode.right = rightnode;
                    list.add(treeNode);
              `enter code here`  }
            }
        }
        return list;
    }
}

错误如下:

Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)