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