我有一个Vector<int[][]>
,当我给它一个int[][]
数组的克隆,然后更改int[][]
数组中的某些内容并调用int[][] = Vector.get(0)
时,该数组不会恢复为应有的值。
如何获得我的int [] []成为Vector.get(0)的值?
import java.util.Vector;
public class ArrayFromVectorProblem {
public static void main(String[] args){
int[][] myArray = {{0,0,1, 0, 0}, {0,0,2,0,0}};
Vector<int[][]> myVector = new Vector<int[][]>();
myVector.add(myArray.clone());
myArray[1][2] = 5;
//should print 5, and prints 5
System.out.println("MyArray[1][2]: " + myArray[1][2]);
myArray = myVector.get(0);
//should print 2, and prints 5
System.out.println("MyArray[1][2] 2nd try: " + myArray[1][2]);
}
}
这是我的输出:
MyArray[1][2]: 5
MyArray[1][2] 2nd try: 5
最佳答案
请注意,在myArray.clone()
中正在执行数组的浅表副本。
您期望的行为是您从深层复制中得到的结果。
查看此帖子以查看区别:How do I copy an object in Java?
关于java - 使用get时不会替换int [] []的int [] []类型的 vector ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20164126/