[英]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.