【问题标题】:Java - copying arraylist objectsJava - 复制数组列表对象
【发布时间】:2009-10-07 12:46:14
【问题描述】:

我正在尝试将数组列表的内容复制到另一个对象中。我尝试通过以下方式初始化新的 ArrayList 对象

newArrList.addAll(oldArrList);

newArrList = new ArrayList(oldArrList);

但每次我对其中一个数组列表进行更改时,另一个 ArrayList 中的值也会发生变化。

谁能告诉我如何避免这种情况。

谢谢。

【问题讨论】:

    标签: java collections arraylist


    【解决方案1】:

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

    我怀疑当您说您对其中一个列表进行更改时,您实际上的意思是您正在对列表引用的对象之一进行更改。这是意料之中的。

    如果您希望列表具有对独立对象的引用,则需要在将对象从一个列表复制到另一个列表时制作对象的深拷贝。具体如何工作取决于您要复制的对象。

    【讨论】:

    • 你好,deep copy,你的意思是对象/内容要一个一个复制吗?
    • @user1282407:是的。您无需保留对现有对象的引用,而是创建具有相同内容的新对象(不可变对象除外,这无关紧要)。
    • 好的。谢谢!我想没有更简单的方法来仅复制内容。 .
    猜你喜欢
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 2011-07-27
    • 2017-04-12
    • 2021-07-19
    • 1970-01-01
    相关资源
    最近更新 更多