首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改ArrayList of ArrayList时并发修改异常

修改ArrayList of ArrayList时并发修改异常
EN

Stack Overflow用户
提问于 2019-09-11 22:00:01
回答 1查看 40关注 0票数 0

问题

编写一个函数,该函数接受一个唯一整数数组并返回其powerset。X的powerset P(X)是X的所有子集的集合。例如,1,2的powerset是[[],1,2,1,2]。注意,powerset中的集合不需要按任何特定的顺序排列。

My approach

我的方法非常简单,我将从一个名为master的ArrayList of ArrayList开始。我将创建一个emptyList并将其添加到主程序中。然后,我将遍历每个数字,对于每个数字,我将创建一个新的列表,就像主目录中的所有列表一样,但是将新的数字附加到其中。因此,如果我在主列表中有一个空列表,而我的num是1,我将向主列表中添加1。然后当我在2岁时,我会在主列表中添加2和1,2。

我的代码

代码语言:javascript
复制
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中的异常

我不知道这是如何同时进行的修改,以及如何删除它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-11 22:10:20

您正在尝试同时迭代和修改列表,因此是不允许的。该算法也是不正确的。您可以在这里查看一个更好的实现,Obtaining a powerset of a set in Java :)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57897341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档