2013-08-11 6 views
0

Не могли бы вы рассказать мне, как получить размер зарезервированного массива?Длина массива строк java

Посмотрите это:

public static String arr_list[][][][][]= new String[2][10][10][2][5]; 

Я знаю, что это большой массив.

Я размещаю там данные и хочу получить размер данных третьего элемента.

arr_list[0][0].length - но он все еще возвращает 10.

Но [0][0] у меня есть только 4 значения:

arr_list[0][0][0].. 
arr_list[0][0][1].. 
arr_list[0][0][2].. 
arr_list[0][0][3].. 

Как вернуть 4, не 10?

+6

Вам действительно нужен массив 5d. Что вы здесь храните? –

+1

Кроме того, он вернет 10, потому что элементы существуют независимо от того, установлены ли они –

+0

Но '10' - правильный ответ. 'arr_list [0] [0] [9]' - массив, содержащий два массива, каждая из пяти строк. – ruakh

ответ

1

Вы инициализирует массив 5d ..... размер 1-го размерности 2,2d 10 3d 10 4d 2 и размер 5-й 5 ..

так что общий размер будет 2 * 10 * 10 * 10 * 2 * 5 = 20 000 , если вы оставите их пустыми. Они будут автоматически заполнены нулевыми символами ... если вы хотите рассчитать размер ... вы можете найти, где первый нулевой символ и количество элементов, прежде чем он

+0

Nice; D У вас есть право. Итак, лучший способ - 5d arraylist? – user2652995

+2

@ user2652995: ** Нет **, если вы не представите действительную причину, по которой вам нужно быть 5-мерным, вы должны использовать что-то подходящее. Вероятно, некоторые пользовательские классы. – jlordo

2

массивов контейнеров постоянного размера, они всегда имеют объявленную длину, поэтому вы всегда получите 10.

Рассмотрят U петь Lists (например, ArrayList).

+0

Можно создать 5-й arraylist? Не могли бы вы рассказать мне, как это сделать? – user2652995

+4

@ user2652995: несмотря на то, что я опытный разработчик, я едва могу обернуть голову вокруг массивов, которые имеют более двух измерений. Вы должны сказать нам, чего вы хотите достичь, потому что 5-мерный массив (или 5-й список), вероятно, не является подходящим решением вашей проблемы. –

+0

, если вы ** действительно нуждаетесь в этом, то 5d ArrayList просто будет ArrayList из ArrayLists из ArrayLists из ArrayLists из ArrayLists, но я очень сомневаюсь, что вам действительно нужно больше двух измерений. – lejlot

0

Если вы инициализируете массив с помощью new String[2][10][10][2][5], вы явно сказали системе, что хотите, чтобы arr_list [0] [0] имел 10 элементов. Я боюсь, что вам поверит, и создадим массив из 10 элементов.

Если вы хотите, чтобы размер варьировался в зависимости от количества фактического элемента, вам необходимо инициализировать его динамически.

public static String arr_list[][][][][]= new String[2][][][][]; создает arr_list с двумя нулевыми ссылками типа String[][][][]. Затем вы можете инициализировать каждый из них массивами, содержащими количество элементов, которые вам действительно нужны на следующем уровне, и так далее.

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