0

我有两个列表,ListAListB想复制ListBListA.

就复杂性和结果而言,以下各项有什么区别:

  1. ListA = ListB;
  2. ListA = new ArrayList(ListB);
4

3 回答 3

7

listA = listB只有一个列表。所以如果你打电话listA.add(something);,它也会增加listB

listA = new ArrayList(listB);两个列表(恰好包含相同的对象)。所以如果你打电话listA.add(something);,它不会添加任何东西到listB.

就复杂性而言,第一个是简单的赋值(即在恒定时间内运行),而第二个在 O(n) 中运行,n 是 的大小listB

于 2013-01-18T13:01:25.780 回答
6

在第一种情况下,根本没有复制。只是aliasing :listA可以看作是同义词,别名为ListB.

这自然是由于 Java 对引用类型的独占使用。Java 中的任何类型实际上都不能将对象作为其值。

于 2013-01-18T13:00:41.800 回答
3

为了ListA = ListB

您没有复制列表,您只是为该对象分配了另一个别名(引用)。

于 2013-01-18T13:01:30.543 回答