Java - 复制ArrayList对象

5
我正在尝试将一个ArrayList的内容复制到另一个对象中。我尝试了以下几种方法来初始化新的ArrayList对象:
newArrList.addAll(oldArrList);

并且

newArrList = new ArrayList(oldArrList);

但每次我更改一个数组列表的值时,另一个ArrayList中的值也会发生更改。请问有人可以告诉我如何避免这种情况吗?谢谢。
1个回答

15

ArrayList只包含对象的引用而不是对象本身。当你将一个列表的内容复制到另一个列表时,你复制的是这些引用。这意味着这两个列表将引用相同的对象。

我猜想当你说你对其中一个列表做出更改时,实际上是指你正在对列表引用的一个对象进行更改。这是可以预期的。

如果你希望这些列表具有引用独立对象的能力,那就需要在从一个列表复制到另一个列表时深度复制这些对象。如何实现深度复制将取决于你要复制的对象。


你好,通过“深拷贝”,你是指对象/内容应该逐个复制吗? - Jane Deuschandell
@user1282407:是的。与其保留对现有对象的引用,不如创建具有相同内容的新对象(不包括不可变对象,因为这没什么影响)。 - Jon Skeet
好的。谢谢!我猜只有复制内容没有更简单的方法了。 - Jane Deuschandell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接