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

keo*_*ont 5 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");
Run Code Online (Sandbox Code Playgroud)

所以我现在有一个新的列表,它是第一个的副本.我可以修改第二个,而不是第一个被改变.

现在我无法理解如何做同样的事情,但在列表的末尾添加了项目.

我正在做的就是上面的代码,并将列表添加到另一个列表中.随着addAll为例.但我到处都看到这只是复制引用等等,所以如果它在一个方法或它的rmi代码中,列表本身就不会完整,它会引用我刚创建的另一个列表.

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

Era*_*ran 6

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

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

顺便说一句,对于一个不可变类的列表,例如String,对元素的引用被复制(与元素的副本相对)并不重要,因为你不能修改元素,所以你无法对第二个列表的内容做任何事情都会影响原始列表的内容.