在Java中深克隆多维数组...? [英] Deep cloning multidimensional arrays in Java...?

查看:134
本文介绍了在Java中深克隆多维数组...?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有已推断出大小的2多维数组(实际上好他们唯一的2D)。我如何深克隆呢?这是我迄今为止得到:

 公共富(字[] []原){
克隆=新的字符[original.length] [];
的for(int i = 0; I< original.length,我++)
克隆[I] =(字符[])[i]原.clone();
}

一个平等的测试 original.equals(克隆); 吐出假的。为什么? :|


解决方案

  / **创建布尔数组的独立副本(克隆)。
 * @参数数组数组被克隆。
 返回:一个独立的深的结构数组的克隆。
 * /
公共静态布尔[] [] clone2DArray(布尔[] []数组){
    诠释行= array.length;
    // INT rowIs =阵列[0]。长度;    //克隆数组的浅的结构
    布尔[] [] newArray =(布尔[] [])array.clone();
    //克隆数组的深结构
    对于(INT行= 0;&行LT;排;排++){
        newArray [行] =(布尔[])数组[行] .clone();
    }    返回newArray;
}

I have two multidimensional arrays (well actually they're only 2D) which have inferred size. How do I deep clone them? Here's what I have gotten so far:

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

A test for equality original.equals(clone); spits out a false. Why? :|

解决方案

/**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;
}

这篇关于在Java中深克隆多维数组...?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆