一尘不染

Java ArrayList复制

java

ArrayList l1的尺寸为10。我将其分配l1给新列表引用类型l2。威尔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个列表对象并在集合上进行从旧到新的复制之外,没有其他方法可以将列表对象的副本分配给新的引用变量吗?


阅读 764

收藏
2020-03-06

共1个答案

一尘不染

是的,分配将刚刚复制值的l1(这是引用)l2。它们都将引用相同的对象。

但是,创建浅表副本非常简单:

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

(仅举一个例子。)

2020-03-06