第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Java中復制2維數(shù)組?

如何在Java中復制2維數(shù)組?

我需要為我正在處理的項目制作一個相當大的二維數(shù)組的副本。我有兩個2D數(shù)組:int[][]current;int[][]old;我還有兩種方法可以進行復制。我需要復制數(shù)組,因為當前正在更新電流。public void old(){  old=current}和public void keepold(){  current=old}但是,這不起作用。如果我打電話給老,更新電流,然后調(diào)用keepold,電流不等于它原來的。為什么會這樣?謝謝
查看完整描述

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


查看完整回答
反對 回復 2019-09-03
?
汪汪一只貓

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對象具有相同的尺寸。這可能是最簡單的方法,因為沒有遞歸,這使得表示和訪問更加簡單。


查看完整回答
反對 回復 2019-09-03
  • 3 回答
  • 0 關注
  • 1057 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號