【发布时间】:2015-08-19 19:44:16
【问题描述】:
我从同一个数组中创建了两个列表,并对其中一个进行了排序。当我尝试更改一个列表时,另一个列表也得到了更新。
List<Integer> list = Arrays.asList(ar);
List<Integer> sorted = Arrays.asList(ar);
Collections.sort(sorted);
list.set(0,10000000); //changes sorted also
我花了一段时间才弄清楚,下面提到的代码有效。
List<Integer> sorted = new ArrayList<Integer>(Arrays.asList(ar));
我想知道为什么我的第一种方法不起作用?我创建了两个单独的列表,为什么它们都发生了变化。 java这里怎么给变量赋值?
【问题讨论】:
-
list和sorted指向同一个数组,不是吗? -
@AndrewTobilko:但他只对一个列表进行排序。我将投票赞成这是一个有趣的问题。
-
我有点惊讶这似乎是第一次在 SO 上提出这个问题,因为“问题”与
Arraysapi 本身一样古老(java 1.2)。而且我怀疑直到现在每个人都阅读(并理解)了 javadoc……