我有一个大小为 10 的 ArrayList
l1
。我将 l1
分配给新的列表引用类型 l2
。 l1
和 l2
会指向同一个 ArrayList
对象吗?或者是 ArrayList
对象的副本分配给 l2
?
当使用 l2
引用时,如果我更新列表对象,它也会反射(reflect) l1
引用类型的变化。
例如:
List<Integer> l1 = new ArrayList<Integer>();
for (int i = 1; i <= 10; i++) {
l1.add(i);
}
List l2 = l1;
l2.clear();
除了创建 2 个列表对象以及对集合进行从旧到新的复制之外,是否没有其他方法可以将列表对象的副本分配给新的引用变量?
最佳答案
是的,赋值只会将 l1
的 value(这是一个引用)复制到 l2
。它们都将引用同一个对象。
创建一个浅拷贝非常简单:
List<Integer> newList = new ArrayList<>(oldList);
(仅作为一个例子。)
关于Java ArrayList 副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6536094/