我有一个名为'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]] 我想知道为什么两个载体中的值都发生了变化?相反,它必须只在'临时'向量中。有人可以解释一下吗?
答案 0 :(得分:12)
clone
只执行浅层复制:因此您获得一个新的Vector
,其中包含与原始对象相同的对象。这是预期的行为。
如果您想要不同的行为,则需要自己手动复制内部Vector
。 (这是使用clone
是不明智的众多原因之一。)
答案 1 :(得分:3)
你克隆了外部 Vector。
您的克隆载体包含与原始载体相同的内部载体。