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。我已將您的評論合併到您的問題中。請在下次改進時編輯您的問題。有時候最好清楚一點,你已經編輯了它。 –