在Java中深度克隆多维数组......?

7 java arrays clone

我有两个多维数组(实际上它们只是2D),它们具有推断的大小.我如何深度克隆它们?这是我到目前为止所获得的:

public foo(Character[][] original){
    clone = new Character[original.length][];
    for(int i = 0; i < original.length; i++)
          clone[i] = (Character[]) original[i].clone();
}
Run Code Online (Sandbox Code Playgroud)

对平等的测试original.equals(clone);吐出错误.为什么?:|

小智 13

/**Creates an independent copy(clone) of the boolean array.
 * @param array The array to be cloned.
 * @return An independent 'deep' structure clone of the array.
 */
public static boolean[][] clone2DArray(boolean[][] array) {
    int rows=array.length ;
    //int rowIs=array[0].length ;

    //clone the 'shallow' structure of array
    boolean[][] newArray =(boolean[][]) array.clone();
    //clone the 'deep' structure of array
    for(int row=0;row<rows;row++){
        newArray[row]=(boolean[]) array[row].clone();
    }

    return newArray;
}
Run Code Online (Sandbox Code Playgroud)


aba*_*gat 3

您可能想查看java.util.Arrays.deepEqualsjava.util.Arrays.equals方法。

恐怕equals数组对象的方法执行浅比较,并且不能正确地(至少在这种情况下)比较内部Character数组。