Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
arraylist java.util.ConcurrentModificationException从其他类初始化_Java_Arraylist - Fatal编程技术网

arraylist java.util.ConcurrentModificationException从其他类初始化

arraylist java.util.ConcurrentModificationException从其他类初始化,java,arraylist,Java,Arraylist,我得到以下异常堆栈跟踪: Exception in thread "main" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) at java.util.ArrayList$Itr.next(ArrayList.java:851) at Controllers.Manag

我得到以下异常堆栈跟踪:

Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
    at java.util.ArrayList$Itr.next(ArrayList.java:851)     at
    Controllers.Manager.createTheNetwork(Manager.java:123)  at
    Controllers.Main.main(Main.java:53)
为什么我要得到这个堆栈跟踪?我刚刚从另一个类初始化了一个
ArrayList

主类
公共类主{
私有静态管理器;
私有静态数组列表;
私有静态数组列表;
私有静态数组列表和工具列表;
公共静态void main(字符串[]args){
ap傻瓜列表=新的ArrayList();
avjullist=newarraylist();
aNfooList=新阵列列表();
添加(新的Pfoo());
添加(新的Pfoo());
用于(Pfoo p:Ap傻瓜)
如果(!p.isAMethod())
添加(新的Cfoo());
添加(新的Nfoo());
添加(新的Nfoo());
经理=新经理();
manager.setList(aList1);
manager.setList(aList2);
manager.createSomething();
}
}
Manager.java
import java.util.ArrayList;
公共班级经理{
private ArrayList nfolist=新的ArrayList();
private ArrayList vfooList=new ArrayList();
公共节点管理器(){
}
公共阵列列表getnfolist(){
回归民主;
}
公共void addNfooToTheNfooNetwork(nfoon){
此.nfolist.add(n);
系统输出println(n);
}
公共void将新Vfoo添加到网络(Vfoo aVfoo){
getnfolist().get(0.addToStack(aVfoo);
}
公共无效添加一个新的网络(Tfoo t,int whichNfoo){
getNfooList().get(whichNfoo.addToStack(t);
}
公共无效重置网络工作(){
nfolist.clear();
}
公共空间{
for(Nfoo n:nfooList)
AddNfootthenfooNetwork(n);
for(Vfoo v:vfooList)
向网络(v)添加一个新窗口;
}
public void createSomething(ArrayList nl,ArrayList vl){
这是setnfolist(nl);
这个.setVfooList(vl);
for(Nfoo n:nfooList)
AddNfootthenfooNetwork(n);
for(Vfoo v:vfooList)
向网络(v)添加一个新窗口;
}
公共无效setnfolist(ArrayList nl){
this.nfolist=nl;
}
公共无效设置工具列表(ArrayList vl){
this.vfooList=vl;
}
}

事实上,正如您在使用迭代器的注释中所写的那样。检查文档中的循环:
for(Obj o:objectList)

正如@Nagesh Susaria在评论中所说,您的实际错误是,当循环中的
迭代器对其进行解析时,您试图重新初始化或只是将新的
Nfoo对象
添加到ArrayList中。 检查以下各项:

 for (Nfoo n : nfooList)
   addNfooToTheNfooNetwork(n);

正如您将看到的,代码的“小故障”出现在
this.nfolist.add(n)中
addNfooToTheNfooNetwork(n)
我想他们两个都在做同样的事情。删除其中一个,您就可以了

事实上,正如您在使用迭代器的注释中所写的那样。检查文档中的循环:
for(Obj o:objectList)

正如@Nagesh Susaria在评论中所说,您的实际错误是,当循环中的
迭代器对其进行解析时,您试图重新初始化或只是将新的
Nfoo对象
添加到ArrayList中。 检查以下各项:

 for (Nfoo n : nfooList)
   addNfooToTheNfooNetwork(n);

正如您将看到的,代码的“小故障”出现在
this.nfolist.add(n)中
addNfooToTheNfooNetwork(n)
我想他们两个都在做同样的事情。删除其中一个,您就可以了

您是否阅读了ConcurrentModificationException的javadoc?或者已经存在的无数类似问题中的任何一个?每个答案都提到了使用迭代器。我在这里不使用迭代器,也不使用迭代器添加或删除项目。我刚刚尝试将ArrayList从一个类设置为另一个类。代码类似于:setVfooList(newList),当我尝试使用它时,newList有ConcurentModificationException。如果我没有错,每个循环都是
,比如
for(Pfoo p:apwhoolist)
,请使用迭代器。
for(Nfoo n:nfooList)AddNfootthenfooNetwork(n)这似乎是在迭代时将nfooList中的每个元素添加回nfooList中,这就是问题所在。您是否阅读了ConcurrentModificationException的javadoc?或者已经存在的无数类似问题中的任何一个?每个答案都提到了使用迭代器。我在这里不使用迭代器,也不使用迭代器添加或删除项目。我刚刚尝试将ArrayList从一个类设置为另一个类。代码类似于:setVfooList(newList),当我尝试使用它时,newList有ConcurentModificationException。如果我没有错,每个循环都是
,比如
for(Pfoo p:apwhoolist)
,请使用迭代器。
for(Nfoo n:nfooList)AddNfootthenfooNetwork(n)这似乎是在迭代时将nfooList中的每个元素添加回nfooList,这就是问题所在
 for (Nfoo n : nfooList)
   addNfooToTheNfooNetwork(n);
public void addNfooToTheNfooNetwork(Nfoo n){
    this.nfooList.add(n);
    System.out.println(n);
}