Создание массива массивов переменной размерности

#java #arrays #multidimensional-array

#java #массивы #многомерный массив

Вопрос:

Я пытаюсь создать float массив I таким образом, чтобы его элементы содержали массивы 2, 3, 4 и 5 измерений:

 I: [0][1052] [1052]
   [1][N]    [185]  [185]
   [2][N]    [N]    [34]  [34]
   [3][N]    [N]    [N]   [6]  [6]
  

Где N — некоторая константа, я еще не решил. Например, I[0] ссылается на a float[][] , но I[1] ссылается на a float[][][] .

Предполагается, что это иерархия квадратов данных, которые связаны друг с другом. Другими словами, это похоже на файловую систему, где каждая папка содержит N больше дочерних папок.

Есть ли способ, которым я могу выполнить это, помимо объявления I с 6 измерениями или с использованием 4 отдельных массивов?

Ответ №1:

Массив — это объект. Таким образом, вы можете создать массив объектов и хранить в нем массивы 1D, 2D или 100D:

 Object[] arr = new Object[3];
arr[0] = new float[][]{}; //2D
arr[1] = new float[][][][]{}; //4D
arr[2] = new float[]{}; //1D
  

Недостатком является то, что это не помешает вам хранить многомерные массивы, отличные от float:

 arr[0] = new String[][]{};
arr[1] = new Object[]{};
arr[2] = new Integer[][][]{};
  

Комментарии:

1. Что делает {} после [] ?

2. @Petersen просто инициализирует массив ничем. Но вам это не понадобится, поскольку у вас уже есть эти массивы.

Ответ №2:

ПРИМЕЧАНИЕ: Это не очень хороший способ работы с массивами, особенно с многомерным массивом. В любом случае, если вы сделаете это таким образом,

 Object[] I = new Object[4];
  

Затем вы можете сделать это,

 I[0] = new float[2];
I[1] = new float[3];
I[2] = new float[4];
I[3] = new float[5];