java 2d arraylist编辑内部循环
我有一个存储对象的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
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在处理如何修改列表时要小心。在这种情况下应该没有问题。我遇到的问题是,如果列表中添加了新行,我希望它也在新行中迭代,以确保没有任何重复项