2013-01-18 36 views

回答

7

listA = listB,只有一个列表。因此,如果您拨打listA.add(something);,它也会添加到listB

listA = new ArrayList(listB);有两个列表(它们恰好包含相同的对象)。因此,如果您拨打listA.add(something);,它不会向listB添加任何内容。

就复杂性而言,第一个是简单分配(即以恒定时间运行),而第二个以O(n)运行,n的大小为listB

6

在第一种情况下,没有复制的。只需别名listA可以被视为同义词,别名为ListB

这自然是由于Java独家使用的引用类型。 Java中没有任何类型实际上可以将对象作为其值。

3

ListA = ListB

你是不是抄袭的列表中,你只是指定另一个别名(参考)到该对象。