2015-12-10 100 views
0

我有一個多維數組= = mda [][][] muldtidimeimeional陣列。我想要做的是複製 mda [0][all][all]mda [ 1 ][][],然後在新創建的mda[ 1 ][][]部分進行一些操作。 我檢查了互聯網上的堆棧覆蓋和其他所有教程,並且遇到了[][]結構而不是[][][]結構的教程。只要他們專門解決問題,我會接受鏈接作爲答案,而我不會尋求長時間的迭代和那種解決方案。可能是clone()copy()類型的功能解決方案就是我正在尋求的。 預先感謝您我怎樣才能複製和深度複製[] [] []結構

+0

是真的有多大的差別,當你發現一個關於'array'的深層拷貝的問題,與'arrays'的'array'的深層拷貝相比較? – SomeJavaGuy

+1

我無法編輯您的問題,但以下是一些改進問題的建議:1-您可以給我們提供您提到的解決方案的鏈接,因此我們知道您在說什麼。 2 - 您可以用適當的標籤標記代碼片段,這樣我們就可以更輕鬆地閱讀。 3 - 您可以使用段落分隔問題的不同部分,以便我們可以掃描文本。 4 - 當你發佈一個問題時,確保它可以被[鴨子]理解(http://blog.codinghorror.com/rubber-duck-problem-solving/)。每個人都很忙。幫助他們幫助你。 – turzifer

+0

我的朋友turzifer謝謝你... – Otag

回答

0

深入複製(這是你想要的)Java中的多維數組的唯一方法是迭代。

所以你的情況,你會擁有這樣的:

public static void main(String[] args) { 
    // First we create the mda: 
    String[][][] mda = new String[2][][]; 

    // Now we fill the mda[0][0][0] with 8 
    mda[0] = new String[][] { {"8"} }; 

    // We make a deepCopy of mda[0] and put it in mda[1]: 
    mda[1] = deepCopy(mda[0]); 

    // Now we change the value of mda[1][0][0]: 
    mda[1][0][0] = "42"; 

    // And here we show it is truly a copy, mda[0][0][0] isn't changed: 
    System.out.println(mda[0][0][0]); 
    System.out.println(mda[1][0][0]); 
} 

private static String[][] deepCopy(String[][] input) { 
    String[][] output = new String[input.length][]; 
    for(int index = 0; index < input.length; index++) { 
     output[index] = input[index].clone(); 
    } 
    return output; 
} 

輸出將是一個真正的副本:

8 
42 
+0

什麼是羅伊!感謝您的時間!! :) – Otag

+0

deepCopy位顯示在RED中,它位於類形成中的方法內。該mda是一個字符串數組。 pozisyon [donsay] = deepCopy(pozisyon [donsay-1]);是我所做的代碼。該聲明是:[「a2」,「b2」,「c2」,「d2」,「e2」,「f2」,「g2」,「h2」 } {「a1」,「h1」}, {「a7」,「b7」,「c7」,「d7」,「e7」,「f7」,「g7」,「h7」 「a8」,「h8」}, {「b1」,「g1」}, 等等。有什麼建議嗎? – Otag

+0

顯示爲紅色>表示不能編譯?如果將方法從int [] []更改爲String [] [],則應該按照您的示例正常工作。 –