我不能只修改原始列表。
这就是我看到它的完成方式:
List<String> l1 = new ArrayList<String>();
l1.add("Hello");
l1.add("World");
List<String> l2 = new ArrayList<String>(l1); //A new arrayList.
l2.add("Everybody");
所以我现在有了一个新列表,它是第一个的副本。我可以在没有第一次更改的情况下修改第二个。
现在我无法理解如何做同样的事情,但在列表的末尾添加了这些项目。
我正在做的就是上面的代码,并将列表添加到另一个列表中。以addAll
为例。但是我到处都看到这只会复制引用等等,所以如果它在一个方法或它的一个rmi代码中,列表本身就不会完整,它会引用我刚创建的另一个列表。
由于我需要对许多类型的列表执行此操作,因此不确定逐项逐项是否理想。所以我需要在另一个列表的末尾添加一个列表,如果可能的话。
答案 0 :(得分:6)
addAll
将源列表元素的引用复制到目标列表的末尾,它不会复制对源列表本身的引用。
这与您使用的构造函数没有什么不同 - new ArrayList<String>(l1)
- 确实如此。如果一个符合您的要求,另一个也符合您的要求。