当我将arraylist添加到arraylist的arraylist时,为什么我应该使用.add(new ArrayList<>(list))?

时间:2016-01-10 22:57:44

标签: arraylist

我正在解决一个子集问题,并初始化一个名为list的arraylist和一个名为result的arraylist的arraylist。在向结果添加列表时,我应该使用result.add(new ArrayList<>(list))。你能告诉我为什么吗?代码如下所示。非常感谢。

public ArrayList<ArrayList<Integer>> subsets(int[] nums) {
    ArrayList<ArrayList<Integer>> result = new ArrayList<>();
    if (nums == null || nums.length == 0) {
        return result;
    }

    Arrays.sort(nums);
    ArrayList<Integer> list = new ArrayList<>();
    subsetsHelper(nums, result, list, 0);
    return result;
}

public void subsetsHelper(int[] nums, ArrayList<ArrayList<Integer>> result, ArrayList<Integer> list, int start) {
    result.add(new ArrayList<Integer>(list));
    for (int i = start; i < nums.length; ++i) {
        list.add(nums[i]);
        subsetsHelper(nums, result, list, i + 1);
        list.remove(list.size() - 1);
    }
}

1 个答案:

答案 0 :(得分:0)

在subsetsHelper()中:

“list”想要存储整数。

“result”想要存储整数的ArrayLists。

result.add(new ArrayList<Integer>(list))可能只是result.add(list)

您所做的就是先将列表中的所有项目复制到新的ArrayList<Integer>中,然后将该ArrayList放入结果中。