1

我有一个名为“link_occur_nodup”的二维向量,其中包含 [[5, 2, 1, 1], [2, 1, 1]] 的数据。现在,如果我尝试做

Vector<Vector<Integer>> temp=(Vector<Vector<Integer>>) link_occur_nodup.clone();
    temp.elementAt(0).set(1, 50);
    System.out.println(temp+" "+link_occur_nodup);

输出是: [[5, 50, 1, 1], [2, 1, 1]] [[5, 50, 1, 1], [2, 1, 1]] 我想知道为什么值会改变在两个向量中?相反,它只能在“temp”向量中。有人可以解释一下吗?

4

2 回答 2

12

clone只做一个浅拷贝:所以你得到一个新Vector的,它引用了与原始对象相同的对象。这是预期的行为。

如果您想要不同的行为,您需要自己手动复制内部Vectors。(这是不建议使用 的众多原因之一clone。)

于 2013-01-09T21:27:12.797 回答
3

您已经克隆了外部向量。

您的克隆向量包含与原始向量相同的内部向量。

于 2013-01-09T21:27:05.463 回答