我有两个列表ListA
和ListB
,我想将ListB
复制到ListA
。
以下在复杂性和结果方面有以下区别:
ListA = ListB;
ListA = new ArrayList(ListB);
答案 0 :(得分:7)
使用listA = listB
,只有一个列表。因此,如果您致电listA.add(something);
,它也会添加到listB
。
listA = new ArrayList(listB);
有两个列表(碰巧包含相同的对象)。因此,如果您致电listA.add(something);
,则不会向listB
添加任何内容。
就复杂性而言,第一个是简单的分配(即在恒定时间内运行),而第二个在O(n)中运行,n是listB
的大小。
答案 1 :(得分:6)
在第一种情况下,根本没有复制。只需别名:listA
即可视为同义词,ListB
的别名。
这自然是由于Java专门使用引用类型。 Java中没有类型实际上可以将对象作为其值。
答案 2 :(得分:3)
代表ListA = ListB
您没有复制列表,只是为该对象分配了另一个别名(引用)。