2015-04-23 4 views
1

Я понимаю, что x является зазубренный массив вJagged Java массивы Int

int x[][] = {{0,1,2,3,4},{0,1,2},{0,1,2,3}}; 

Но данный массив a как

int a[] = {10,3,47,4,8}; 

является a зазубренный массив?

ответ

4

В целом CS Ответ

Термин "неровный" (я также видел "рваный") массив относится к a multi-dimension array (>1) where each element is an array. Таким образом

int[] a = {1,2,3}; 

Не зазубренный массив, но

int[][] a = {{1,2,3,4}, {5,6,7}}; 

Is. Тем не менее, парадоксально,

int[][] a = {{1,2,3,4}, {5,6,7,8}}; 

также зазубренный массив, даже если он «выглядит даже» если вы рисуете его:

int[][] a = { 
    {1,2,3,4}, 
    {5,6,7,8} 
}; 

Это происходит потому, что другие кодирующие языки (например, C#) различают многомерные массивы и зубчатые массивы. В этих языках «зубчатый» не является описанием текущей структуры рассматриваемого массива, но какой тип объекта он целиком. See the difference between the two here

Java-ответ

В отличии от других языков, Java позволяет только для отдельных массивов данного типа. Таким образом, тип int[][] действительно представляет собой «массив int[]». Итак, Java doesn't support true multi-dimensional arrays, it only has jagged arrays

Из-за этого термин «зубчатый» массив принимает другое значение в обычном java-talk. Поскольку все массивы размерности> 1 действительно зазубрены, термин «зубчатый» означает массив размерности> 1, вспомогательные массивы различной длины.Таким образом, следующий массив «зазубренный», так как первый и второй суб-массивы неравной длины:

int[][] a = {{1,2,3,4}, {5,6,7}} 

Поскольку это эквивалентно:

{ 
    {1, 2, 3, 4}, //Length 4 
    {5, 6, 7} //Length 3 
} 

Этот массив также будет рассмотрен зазубренными:

{ 
    {1, 2, 3, 4}, //Length 4 
    {11, 12, 13, 14}, //Length 4 
    {21, 22, 23, 24}, //Length 4 
    {31, 32, 33, 34}, //Length 4 
    {5, 6, 7} //Length 3 
} 

несмотря на следующее зазубренный массив в техническом смысле, это не условно называть такие:

int[][] a = { 
    {1,2,3,4}, 
    {5,6,7,8} 
} 

Аналогичным образом, поскольку для «зубчатой» сущности требуется, чтобы два суб-массива имели неравную длину, 1-й массив не может быть зазубрен, так как он не имеет поддиапазонов для сравнения.

4

Массив одного измерения не может быть зазубрен, так как массив с зазубринами представляет собой массив массивов, которые имеют несколько длин (как в первом примере).

int a[] = {10,3,47,4,8}; 

не является зубчатым массивом. Википедия на Jagged array говорит (частично)

зубчатый массив, также известный как рваный массив, представляет собой тип многомерного массив, элементы которого состоит из одномерных массивов, следовательно, это «массив массивов ".

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