Java - 包含对原始列表的引用的克隆列表

标签 java list copy clone

我不太清楚在 Java 中复制列表是如何工作的。我有这段代码:

List<String> copy = new ArrayList<String>(original);

这会创建一个名为 copy 的新列表,它只包含对原始列表中对象的引用吗? (这就是我要的)。或者它会生成新的字符串对象并耗尽不必要的内存吗?

当我从副本列表中删除项目时,这是否只会删除引用而不是从两个列表中删除对象?

感谢阅读!

最佳答案

copy 列表将包含对相同 String 对象的引用。这称为浅拷贝。它不会创建元素的副本;它将创建对元素的引用的副本。

original -->  [ +      +       +  ]
                |      |       |
                v      v       v
               "one"  "two" "three"
                ^      ^       ^
                |      |       |
    copy -->  [ +      +       +  ]

当您从一个列表中删除一项时,您只是从该列表中删除了引用。另一个列表中的相应引用仍然完好无损。

original -->  [ +      +       +  ]
                |      |       |
                v      v       v
               "one"  "two" "three"
                ^      ^
                |      |
    copy -->  [ +      +  ]

关于Java - 包含对原始列表的引用的克隆列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29039750/

相关文章:

python - 如何将嵌套列表作为输入?

vba - 对工作簿中的所有工作表进行排序

linux - perl 中的 "Copy failed: File too large"错误

iOS:用户界面图像。如何只复制图像的一部分

java - 如何将分号附加到 ArrayList<String> 中的每个元素

python - 按多个键对字典列表进行分组和聚合

java - 在 Eclipse 中,是否可以找到项目中所有采用某种参数类型的方法?

java - java中2个日期对象之间的差异(以分钟为单位)

java - 右键单击 .jsp 文件时,“在服务器上运行”选项未出现在 Eclipse 中

java - 无法构建 pom 文件。发生未知编译问题