我有两个多维数组(实际上它们只是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)
您可能想查看java.util.Arrays.deepEquals和java.util.Arrays.equals方法。
恐怕equals数组对象的方法执行浅比较,并且不能正确地(至少在这种情况下)比较内部Character数组。
| 归档时间: |
|
| 查看次数: |
12299 次 |
| 最近记录: |