gpt4 book ai didi

java - 这两个 java arrayList.add() 有什么区别

转载 作者:行者123 更新时间:2023-12-02 12:20:08 25 4
gpt4 key购买 nike

public void findCombination(List<List<Integer>> ans, ArrayList<Integer> tmp, int [] candidates, int remain, int start){
if(remain < 0){
return ;
}
else if(remain == 0){
ans.add(new ArrayList<>(tmp));
}
else{
for(int i = start; i < candidates.length; i++){
tmp.add(candidates[i]);
findCombination(ans, tmp, candidates, remain-candidates[i], i);
tmp.remove(tmp.size()-1);
}
}
}

在上面的代码中,我发现当我更改ans.add(new ArrayList<>(tmp))时至ans.add(tmp) 。不行...所以我想问一下,为什么呢? ans.add(new ArrayList<>(tmp)) 之间有什么区别?和ans.add(tmp) .

最佳答案

不同之处在于,当您使用 ans.add(new ArrayList<>(tmp)) 时您正在创建列表 tmp 的副本而不是将其添加到列表中。

如果您使用 ans.add(tmp) 添加它您对列表所做的任何更改 tmp将反射(reflect)在您放置在那里的列表中。

关于java - 这两个 java arrayList.add() 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45851623/

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