gpt4 book ai didi

java - 为什么我需要做 list.add(new ArrayList<>(temp));将列表添加到二维列表时?

转载 作者:行者123 更新时间:2023-12-01 21:09:36 25 4
gpt4 key购买 nike

我正在研究排列问题,我有以下代码:

public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> list = new ArrayList<>();
helper(list,new ArrayList<Integer>(), nums);
return list;
}

private void helper(List<List<Integer>> list, List<Integer> temp, int[] num) {
if (temp.size() == num.length) {
list.add(new ArrayList<>(temp));
}
else {
for (int i = 0; i < num.length; i++) {
if (temp.contains(num[i])) continue;
temp.add(num[i]);
helper(list, temp, num);
temp.remove(temp.size() - 1);
}
}
}

我不明白的是为什么我需要写:

list.add(new ArrayList<>(temp));

而不是:

list.add(temp);

最佳答案

new ArrayList<>(temp)创建一个新的 ArrayList其元素与 temp 相同。这意味着如果 helper 的调用者做类似的事情:

ArrayList<Integer> temp = new ArrayList<>();
// populate temp here
object.helper(list, temp, someIntArray);
temp.clear()

helper 存储的列表不受 clear 的影响.

关于java - 为什么我需要做 list.add(new ArrayList<>(temp));将列表添加到二维列表时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41405225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com