![](/img/trans.png)
[英]Java: Getting Concurrent Modification Exception when modifying ArrayList
[英]Concurrent Modification Exception When Modifying ArrayList of ArrayList
問題
編寫一個接受唯一整數數組並返回其冪集的函數。 集合X的冪集P(X)是X的所有子集的集合。例如,[1,2]的冪集是[[],[1],[2],[1,2]]。 注意,powerset中的集合不需要按任何特定順序排列。
我的方法
我的方法很簡單,我將從一個名為master的ArrayList的ArrayList開始。 我將創建一個emptyList並將其添加到母版中。 然后,我將遍歷每個數字,並為每個數字創建一個新列表,就像已經在主數據庫中的所有列表一樣,但是將新數字附加到該列表中。 因此,如果我在主列表中有一個空列表,並且我的num為1,我將向主列表添加[1]。 然后,當我2歲時,我會將[2]和[1,2]添加到主列表中。
我的密碼
public static void main(String args[]) {
ArrayList<Integer> inputList = new ArrayList<>();
inputList.add(1);
inputList.add(2);
inputList.add(3);
System.out.println(powerset(inputList).size());
}
public static ArrayList<ArrayList<Integer>> powerset(ArrayList<Integer> array) {
ArrayList<ArrayList<Integer>> master = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> emptyList = new ArrayList<>();
master.add(emptyList);
for(Integer num: array){
for(ArrayList<Integer> list: master){
ArrayList<Integer> toAppendList = list;
toAppendList.add(num);
master.add(toAppendList);
}
}
return master;
}
問題
由於某種原因,我不斷
線程“主”中的異常java.util.ConcurrentModificationException
我不確定這是如何進行並發修改,以及如何刪除它。
您正在嘗試同時迭代和修改列表,這是不允許的。 而且算法不正確。 您可以在此處查看更好的實現, 獲得Java中集合的冪集 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.