Java ArrayList复制

新手上路,请多包涵

我有 l2 ArrayList l1 l1 l1l2 指向同一个 ArrayList 对象吗?或者是分配给 ArrayList 对象的副本 l2

使用 l2 引用时,如果我更新列表对象,它也会反映 l1 引用类型的变化。

例如:

 List<Integer> l1 = new ArrayList<Integer>();
for (int i = 1; i <= 10; i++) {
    l1.add(i);
}

List l2 = l1;
l2.clear();

除了创建 2 个列表对象并对集合进行从旧到新的复制之外,是否没有其他方法可以将列表对象的副本分配给新的引用变量?

原文由 user309281 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 448
2 个回答

是的,赋值只会将 l1 的 _值_(这是一个引用)复制到 l2 。他们都将引用同一个对象。

创建浅拷贝非常简单:

 List<Integer> newList = new ArrayList<>(oldList);

(仅举一例。)

原文由 Jon Skeet 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏