Java:类的两个相同对象数组的克隆问题

        做一个关于对象数组的问题,需要对对象数组进行分阶段的修改,但是当前阶段判断的依据是当前的对象数组的情况,如果边判断边修改会影响判断结果,比如 假设对象数组 grid[][]如下 gridOld[][] = grid[][]

        a b c d

        b c d a

        如果一个位置相邻(上下左右四个方向)的和它自己都不一样,那么变成数量多的那个,有一样的就不变

        现在第一行的 a 下一次应该变为b ,第一行的b下一次应该变为c 

        如果判断是根据gridOld而修改的是grid,因为“=”是相当于引用,所以修改grid也会影响gridOld,调试时可以看到他们指向相同一块内存

        所以结果就是 a 下一次是b,而b下一次还是b,因为原来的第一个a已经被修改为b了

        原来试过clone()方法,但是由于时间紧迫,不知道是用法不对还是需要重写,在对象数组克隆时情况和直接用等号相同,所以后来就自己写了一个比较无奈的遍历重建对象数组的方法。

//cells和cellOld是Cell[sizeGrid][sizeGrid]的二维数组
double random;
for(int i = 0; i<this.sizeGrid; i++){ //Grid是正方形表格 sizeGrid是表格边长
	for(int j = 0; j<this.sizeGrid; j++){
		if(cells[i][j] instanceof MutatedCell){//判断当前格子是三种情况的哪一种
			MutatedCell mC = new MutatedCell();//新建一个同类型对象
			cellOld[i][j]=mC;	//赋值给cellOld中对应位置
		}else if(cells[i][j] instanceof NormalCell){
			NormalCell nC = new NormalCell();//如果带可变的属性,需要在把属性赋值给新建的对象
			nC.setstamina(((NormalCell) cells[i][j]).getstamina());//保持两个对象内容相同
			cellOld[i][j]=nC;
		}else if(cells[i][j] instanceof DeadCell){
			DeadCell dC = new DeadCell();
			cellOld[i][j]=dC;
		}
	}
}

        在接下来的根据cellOld的判断而修改cells内容的过程中就不会出现问题,但是在每一次将数据遍历一遍后,新的一遍又要重复上述复制过程,感觉效率很低。不知道有没有比较快捷的方法,望指点。


转载于:https://my.oschina.net/xcxt/blog/335011

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值