Java ArrayList copy

2022-08-31 05:29:54

我有一个10号。我分配给新的列表引用类型。会指向同一个对象?或者是否将对象的副本分配给 ?ArrayListl1l1l2l1l2ArrayListArrayListl2

使用引用时,如果我更新列表对象,它也会反映引用类型的更改。l2l1

例如:

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

List l2 = l1;
l2.clear();

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


答案 1

是的,赋值只会将 的值(这是引用)复制到 。它们都将引用同一对象。l1l2

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

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

(仅举一例。


推荐