簡體   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