Java 修改ArrayList的ArrayList时并发修改异常
问题 编写一个接受唯一整数数组并返回其幂集的函数。集合X的幂集P(X)是X的所有子集的集合。例如,[1,2]的幂集是[[],[1],[2],[1,2]]。请注意,功率集中的组不需要按任何特定顺序排列 我的方法 我的方法很简单,我将从一个名为master的ArrayList的ArrayList开始。我将创建一个空列表并将其添加到主控列表中。然后,我将遍历每个数字,并为每个数字创建一个新列表,就像主列表中的所有列表一样,但将新的数字附加到它。因此,如果主列表中有一个空列表,并且我的num是1,那么我将向主列表中添加[1]。当我2岁时,我会将[2]和[1,2]添加到主列表中 我的代码Java 修改ArrayList的ArrayList时并发修改异常,java,algorithm,exception,java.util.concurrent,Java,Algorithm,Exception,Java.util.concurrent,问题 编写一个接受唯一整数数组并返回其幂集的函数。集合X的幂集P(X)是X的所有子集的集合。例如,[1,2]的幂集是[[],[1],[2],[1,2]]。请注意,功率集中的组不需要按任何特定顺序排列 我的方法 我的方法很简单,我将从一个名为master的ArrayList的ArrayList开始。我将创建一个空列表并将其添加到主控列表中。然后,我将遍历每个数字,并为每个数字创建一个新列表,就像主列表中的所有列表一样,但将新的数字附加到它。因此,如果主列表中有一个空列表,并且我的num是1,那么我
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;
}
publicstaticvoidmain(字符串参数[]){
ArrayList inputList=新的ArrayList();
输入列表。添加(1);
输入列表。添加(2);
输入列表。添加(3);
System.out.println(powerset(inputList.size());
}
公共静态ArrayList电源集(ArrayList阵列){
ArrayList master=新的ArrayList();
ArrayList emptyList=新建ArrayList();
master.add(清空列表);
for(整数编号:数组){
用于(阵列列表:主){
ArrayList toAppendList=列表;
toAppendList.add(num);
master.add(toAppendList);
}
}
返回主机;
}
问题
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;
}
因为某种原因,我一直在
线程“main”java.util.ConcurrentModificationException中出现异常
我不确定这是如何并发修改的,以及如何删除它。您试图同时迭代和修改列表,这是不允许的。算法也不正确。您可以在此处查看更好的实现:)