-1

这是我的SSCCE

http://pastebin.com/rABzKgAx

http://pastebin.com/SypQxApe

我正在尝试使用 Deque of Integer 的数据结构列表。

所以我向双端队列添加了几个整数,然后将它添加到 finalList,但由于我使用双端队列进一步操作并删除元素,它也会从 finalList 中删除这些元素。那么我应该如何将这些项目保存到列表中呢?因为例如,我向 finalList 添加了 30 个元素,但是由于我从 Deque 中删除了原始项目,所以我在 finalList:/ 中只有 30 个空元素。您可以从代码中读取其余部分,在第 57 行,stdout 上有一个输出,它返回空字符串,因此您可以看到问题所在。

所以问题是我只复制对对象的引用,而不是对象,那么我应该如何复制对象?

4

2 回答 2

1

final仅表示以后不能更改该变量以指向另一个列表,并不意味着该列表不能更改。如果您需要原始列表,则必须在更改之前复制它。

于 2012-04-10T11:37:07.547 回答
1

这是使用调试器很有帮助的地方。

您正在使用

finalList.add(tokens);

并假设您添加了列表的副本,但您只是添加了对列表的引用的副本。

所以

            tokens.add(token);
            Func(places, index+1, tokens);
            tokens.removeLast();

删除它添加的每个元素,并且列表为空。

看来您的意图是

        finalList.add(new LinkedList<Integer>(tokens));
于 2012-04-10T11:39:20.547 回答