2015-10-17 3 views
3

Я пытаюсь понять концепцию многомерных массивов в java. Ниже представлен код.Понимание многомерного массива в java

int [] [] [] x = new int [3] [] []; 
    int i, j; 
    x[0] = new int[4][]; 
    x[1] = new int[2][]; 
    x[2] = new int[5][]; 
    for (i = 0; i < x.length; i++) 
    { 
     for (j = 0; j < x[i].length; j++) 
     { 
      x[i][j] = new int [i + j + 1]; 
      System.out.println("size = " + x[i][j].length); 
     } 
    } 
    } 

Я не понимаю, что в настоящее время хранится в «х [0] = новый INT [4] [];», а также то, что идея написания, как это? Любые предложения будут очень полезными.

ответ

2

многомерный массив в основном массив массивов :) Как это:

int[][] X = new int[4][3]; 

означает:

 X[0] X[1] X[2] X[3] 
X -> [ ] [ ] [ ] [ ] 
    [ ] [ ] [ ] [ ] 
    [ ] [ ] [ ] [ ] 

И

int[][] X = new int[4][]; 
X[0] = new int[2]; 
X[1] = new int[1]; 
X[2] = new int[3]; 
X[3] = new int[2]; 

будет производить нерегулярный массив так:

 X[0] X[1] X[2] X[3] 
X -> [ ] [ ] [ ] [ ] 
    [ ]  [ ] [ ] 
        [ ]  

Итак, каждый из «детей» X - это еще один массив. Просто, как это, постарайтесь не переубедить концепцию, это не так сложно, как кажется :)

+0

«int [] [] [] x = new int [3] [] []« это правильная инициализация массива? Что означает x [0] = новый int [4] [3]; означает? –

+0

О, вы правы, я пропустил одну пару скобок, мой плохой, исправил :-) – Kelevandos

+1

В моем примере размеры дочерних массивов предопределены (каждый из них содержит 3 элемента). Если вы сделаете это с пустой скобкой (новый int [4] []), вы можете определить другой размер для каждого из детей. – Kelevandos

2

Java знает массив. Трюк в java заключается в том, что если вам нужен многомерный массив, вы просто создаете массив в массиве. С x [0] = новый int [4] []; вы говорите, что в многомерном массиве есть 4 строки, но вы их не заполняете. Если вы сказали new int [4] [2], в каждой строке должно быть по 2 элемента со значением по умолчанию для int. Если у вас был такой язык, как C#, вы бы сказали int [,], но это невозможно в java.

Из-за этого также можно поместить 2 элемента в первую строку и 3 в следующем. Таким образом возможна неравномерная длина.