在另一个列表的末尾添加列表(不只是复制引用)

时间:2015-05-27 09:15:12

标签: java list arraylist

我不能只修改原始列表。

这就是我看到它的完成方式:

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代码中,列表本身就不会完整,它会引用我刚创建的另一个列表。

由于我需要对许多类型的列表执行此操作,因此不确定逐项逐项是否理想。所以我需要在另一个列表的末尾添加一个列表,如果可能的话。

1 个答案:

答案 0 :(得分:6)

addAll将源列表元素的引用复制到目标列表的末尾,它不会复制对源列表本身的引用。

这与您使用的构造函数没有什么不同 - new ArrayList<String>(l1) - 确实如此。如果一个符合您的要求,另一个也符合您的要求。

BTW,对于不可变类的List,例如String,复制元素的引用(而不是元素的副本)并不重要,因为你可以&#39 ; t修改元素,因此你无法对第二个列表的内容做任何事情都会影响原始列表的内容。