繁体   English   中英

java 2d arraylist循环内编辑

[英]java 2d arraylist edit inside loop

我有一个存储对象的二维数组列表,我想检查某个对象是否存在于任何行中,如果不添加新行,并在以后的检查中搜索该对象。 例如。

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);
    }
}

这给了我一个'ConcurrentModificationException',但是我找不到另一种方法。

提前致谢。

list.add(newList); 这行应该在您的for循环之外。 您正在尝试在迭代列表时对其进行修改。 只需继续在for循环中向newList添加元素。 添加行list.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);

您必须更换:

for(列表o:列表){

与:

for(int i = 0; i <list.size(); i ++){List o = list.get(i);

执行此操作时要小心,以处理修改列表的方式。 在这种情况下,应该没有问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM