我有一个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/

10-13 09:36