这是我的SSCCE
我正在尝试使用数据结构列表Deque of Integer。
所以我在deque中添加了几个整数,然后将它添加到finalList,但由于我使用Deque进一步操作并删除元素,因此它也会从finalList中删除这些元素。那么我该如何将这些物品保存到列表中呢?因为例如,我向finalList添加了30个元素,但由于我从Deque中删除了原始项目,因此我在finalList中只有30个空元素:/。您可以从代码中读取其余内容,在第57行,stdout上有一个输出,ant它返回空字符串,因此您可以看到问题。
所以问题是我只复制对象的引用,而不是对象,所以我该如何复制对象?
答案 0 :(得分:1)
final
仅表示该变量以后无法更改为指向另一个列表,并不意味着该列表无法更改。如果您需要原始列表,则必须在更改之前复制它。
答案 1 :(得分:1)
这是使用调试器的有用之处。
您正在使用
finalList.add(tokens);
并假设您已添加了列表的副本,但您只是将该引用的副本添加到列表中。
所以
tokens.add(token);
Func(places, index+1, tokens);
tokens.removeLast();
删除它添加的每个元素,列表为空。
看起来你想要的是
finalList.add(new LinkedList<Integer>(tokens));