0
在我的项目中,我操纵由对象组成的多维数组。操作后,我想“重置”数组。我从这里和全网测试了几十个“深度复制”代码,但似乎没有人使用多维数组。我在Java 7上。你能提供一个提示吗?深度复制2维对象阵列
通过重置我的意思是在操作之前的初始状态。所以我想创建我的阵列的备份并稍后恢复。
在我的项目中,我操纵由对象组成的多维数组。操作后,我想“重置”数组。我从这里和全网测试了几十个“深度复制”代码,但似乎没有人使用多维数组。我在Java 7上。你能提供一个提示吗?深度复制2维对象阵列
通过重置我的意思是在操作之前的初始状态。所以我想创建我的阵列的备份并稍后恢复。
我相信这应该完成有问题的阵列的深层复制。
private static class CloneableObject
implements
Cloneable {
@Override
public CloneableObject clone() {
return new CloneableObject();
}
}
CloneableObject[][] original;
void someMethod() {
CloneableObject[][] copy = Arrays.copyOf(this.original, this.original.length);
for (int i = 0; i < copy.length; i++) {
copy[i] = Arrays.copyOf(copy[i], copy[i].length);
for (int j = 0; j < copy[i].length; j++) {
copy[i][j] = copy[i][j].clone();
}
}
/*
* Manipulation of this.original is to be done here
* None of the manipulations will be reflected in copy
*
* Note that (this.original[n][m] == copy[n][m]) will evaluate to false,
* where n and m are arbitrary indices of the array.
*/
this.original = copy; // "reset"
}
如果希望Object
的实例不被复制,只需删除内部循环即可。
代码中“Arrays”的含义是什么?我的IDE说它没有被定义,并且没有提供要导入的软件包 – laufi
我自己认为java.util.Arrays是有意义的,但现在它说预期了一个表达式在数组
事实上它的意思是java.util.Arrays中。它写的地方'
除非您定义“重置”,否则无法回答您的问题。 – wero
在操作之前休息到初始状态。所以我想创建我的阵列的备份并稍后恢复 – laufi
欢迎使用Stack Overflow。我已将您的评论合并到您的问题中。请在下次改进时编辑您的问题。有时候最好清楚一点,你已经编辑了它。 –