2015-12-10 2 views
0

У меня есть многомерный массив =>mda [][][]. Я хочу сделать копию mda [0][all][all] до mda [ 1 ][][], а затем выполнить некоторые операции над созданным mda[ 1 ][][] секцией. Я проверил стек и все другие уроки в Интернете и натолкнулся на учебники с структурой [][], а не структурой [][][]. Я буду принимать ссылки в качестве ответов, пока они специально решают проблему, и я не ищу длинные итерации и такое решение. Вероятно, решение функции clone() или copy() - это то, что я ищу. Заранее благодаренКак копировать и копировать массив muldtidimesional с структурой [] [] []

+0

есть на самом деле, что большая разница, когда вы нашел вопрос о глубокой копии массива, по сравнению с глубокой копией массива '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]); это код, который я сделал. Декларация представляет собой строку [] [] [] pozisyon = { { {"a2", "b2", "c2", "d2", "e2", "f2", "g2", "h2" }, {"a7", "b7", "c7", "d7", "e7", "f7", "g7", "h7"}, {"a1", "h1"}, { «a8», «h8»}, {«b1», «g1»}, и т. д. Любые предложения? – Otag

+0

Показывается красным цветом> означает, что он не компилируется? Если вы измените метод из int [] [] на String [] [], он должен работать отлично, учитывая ваш пример. –

Смежные вопросы