【发布时间】:2015-03-13 18:45:46
【问题描述】:
我不知道在 Java 中复制 List 是如何工作的。我有这个代码:
List<String> copy = new ArrayList<String>(original);
这是否会创建一个名为 copy 的新列表,它只包含对原始列表中对象的引用? (这就是我要的)。还是会创建新的字符串对象并占用不必要的内存?
当我从副本列表中删除项目时,这只会删除引用而不从两个列表中删除对象吗?
感谢阅读!
【问题讨论】:
-
将创建新的字符串对象。如果您从
copy中删除,它不会从original中删除。如果你这样做List<String> copy = original,那么你只是在做一个参考,在copy中改变会改变original -
@gtgaxiola 这不会生成新的 String 对象。它只会用相同的旧列表填充列表。此外,您不会更改
copy,而是更改“存储在”copy中的实体,这恰好是“存储在”original中的同一实体。