3 回答

TA貢獻1772條經(jīng)驗 獲得超5個贊
current=old或者old=current使兩個數(shù)組引用相同的東西,所以如果你隨后修改current,old也會被修改。要將數(shù)組的內(nèi)容復制到另一個數(shù)組,請使用for循環(huán)
for(int i=0; i<old.length; i++)
for(int j=0; j<old[i].length; j++)
old[i][j]=current[i][j];
PS:對于一維數(shù)組,您可以避免使用創(chuàng)建自己的for循環(huán) Arrays.copyOf

TA貢獻1898條經(jīng)驗 獲得超8個贊
/**
* Clones the provided array
*
* @param src
* @return a new clone of the provided array
*/
public static int[][] cloneArray(int[][] src) {
int length = src.length;
int[][] target = new int[length][src[0].length];
for (int i = 0; i < length; i++) {
System.arraycopy(src[i], 0, target[i], 0, src[i].length);
}
return target;
}
是否可以修改此代碼以支持n維對象數(shù)組?
您需要支持任意長度的數(shù)組并檢查src和destination是否具有相同的維度,并且您還需要遞歸地復制每個數(shù)組的每個元素,以防Object也是一個數(shù)組。
我發(fā)布這個已經(jīng)有一段時間了,但我找到了一個很好的例子來創(chuàng)建一個n維數(shù)組類。該類在構造函數(shù)中采用零個或多個整數(shù),指定每個維度的相應大小。該類使用底層平面數(shù)組,Object[]并使用維度和乘數(shù)數(shù)組計算每個元素的索引。(這是使用C編程語言完成數(shù)組的方法。)
復制一個實例NDimensionalArray就像復制任何其他2D數(shù)組一樣簡單,但您需要聲明每個NDimensionalArray對象具有相同的尺寸。這可能是最簡單的方法,因為沒有遞歸,這使得表示和訪問更加簡單。
添加回答
舉報