我ArrayList l1的尺寸为10。我将其分配l1给新列表引用类型l2。威尔l1和l2指向同一个ArrayList对象吗?还是ArrayList分配给对象的副本l2?
ArrayList l1
l2
l1
ArrayList
使用l2引用时,如果我更新列表对象,它也会反映l1引用类型中的更改。
例如:
List<Integer> l1 = new ArrayList<Integer>(); for (int i = 1; i <= 10; i++) { l1.add(i); } List l2 = l1; l2.clear();
除了创建2个列表对象并在集合上进行从旧到新的复制之外,没有其他方法可以将列表对象的副本分配给新的引用变量吗?
是的,分配将刚刚复制值的l1(这是引用)l2。它们都将引用相同的对象。
但是,创建浅表副本非常简单:
List<Integer> newList = new ArrayList<>(oldList);
(仅举一个例子。)