java赋值两个对象数组 clone_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

for(int j = 0; 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内容的过程中就不会出现问题,但是在每一次将数据遍历一遍后,新的一遍又要重复上述复制过程,感觉效率很低。不知道有没有比较快捷的方法,望指点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值