Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
java 2d arraylist编辑内部循环_Java_Search_Arraylist_2d_Concurrentmodification - Fatal编程技术网

java 2d arraylist编辑内部循环

java 2d arraylist编辑内部循环,java,search,arraylist,2d,concurrentmodification,Java,Search,Arraylist,2d,Concurrentmodification,我有一个存储对象的2d ArrayList,我想检查某个对象是否存在于任何行中,如果不存在,则添加一个新行,并在以后的检查中搜索该对象。例如 ArrayList<List<Object>> list = new ArrayList<>(); for(List<Object> o : list) { if(!o.contains(object){ ArrayList<Object> newList = new Ar

我有一个存储对象的2d ArrayList,我想检查某个对象是否存在于任何行中,如果不存在,则添加一个新行,并在以后的检查中搜索该对象。例如

ArrayList<List<Object>> list = new ArrayList<>();
for(List<Object> o : list) {
    if(!o.contains(object){
        ArrayList<Object> newList = new ArrayList<>();
        newList.add(object);
        list.add(newList);
    }
}
ArrayList list=new ArrayList();
对于(列表o:列表){
如果(!o.contains)(对象){
ArrayList newList=新的ArrayList();
添加(对象);
list.add(newList);
}
}
这给了我一个“ConcurrentModificationException”,但我找不到其他方法来实现它


提前感谢。

list.add(newList);此行应该在for循环之外。您试图在对列表进行迭代时修改列表。只需在for循环中继续向newList添加元素。添加行列表。add(newList);在for循环之后。

在迭代列表项时,无法更改列表

您可以做的是:

ArrayList<List<Object>> list = new ArrayList<>(); // in practice this would not be an empty list, but it would, as in your example, contain all items
ArrayList<List<Object>> newRows = new ArrayList<>();
for(List<Object> o : list) {
    if(!o.contains(object){
        ArrayList<Object> newList = new ArrayList<>();
        newList.add(object);
        newRows.add(newList);
    }
}
list.addAll(newRows);
ArrayList list=new ArrayList();//实际上,这不是一个空列表,但它会像在您的示例中一样包含所有项
ArrayList newRows=新的ArrayList();
对于(列表o:列表){
如果(!o.contains)(对象){
ArrayList newList=新的ArrayList();
添加(对象);
newRows.add(newList);
}
}
list.addAll(新行);
您必须更换:

对于(列表o:列表){

与:

对于(int i=0;i
在处理如何修改列表时要小心。在这种情况下应该没有问题。

我遇到的问题是,如果列表中添加了新行,我希望它也在新行中迭代,以确保没有任何重复项