我有两个列表,ListA
和ListB
,我想将ListB
复制到ListA
。Java ArrayList:复制构造函数和通过赋值复制的区别
是什么下面的区别,在复杂性和结果方面:
ListA = ListB;
ListA = new ArrayList(ListB);
我有两个列表,ListA
和ListB
,我想将ListB
复制到ListA
。Java ArrayList:复制构造函数和通过赋值复制的区别
是什么下面的区别,在复杂性和结果方面:
ListA = ListB;
ListA = new ArrayList(ListB);
与listA = listB
,只有一个列表。因此,如果您拨打listA.add(something);
,它也会添加到listB
。
与listA = new ArrayList(listB);
有两个列表(它们恰好包含相同的对象)。因此,如果您拨打listA.add(something);
,它不会向listB
添加任何内容。
就复杂性而言,第一个是简单分配(即以恒定时间运行),而第二个以O(n)运行,n的大小为listB
。
在第一种情况下,没有复制的。只需别名:listA
可以被视为同义词,别名为ListB
。
这自然是由于Java独家使用的引用类型。 Java中没有任何类型实际上可以将对象作为其值。
为ListA = ListB
你是不是抄袭的列表中,你只是指定另一个别名(参考)到该对象。
1)将引用复制到列表2)创建一个新列表,其中包含对列表中元素的引用副本。 –