Я бы хотел представить матричные данные в подходящей структуре данных на Java. Размеры этой матрицы зависят от пользовательского ввода. Один из способов, вероятно, состоит в том, чтобы использовать «магическую» max-константу и использовать простой многомерный массив. Но операции с данными сильно зависят от измерения, и я хотел бы избегать фиксированных массивов, поскольку мне всегда нужно было отслеживать используемое и максимальное измерение. Конечно, более динамичный подход состоит в том, чтобы определить что-то вроде
private ArrayList<ArrayList<ArrayList<Point>>> arr3d = new ArrayList<ArrayList<ArrayList<Element>>>();
Я думаю, что это неприемлемо безобразно. Возможно, было бы лучше определить пользовательскую структуру данных, то есть одномерный ArrayList (или Vector), а затем каким-то образом обернуть это, то есть сопоставить доступ, указанный как [i, j, k], с некоторым элементом этого единого списка. Можно ли переписать оператор []? Как это сделать эффективно? Есть какая-нибудь существующая библиотека или код, на который я мог бы опираться?
PS: Я думал, что это может быть распространенной проблемой, но, несмотря на все усилия, я не нашел существующего вопроса. Заранее извиняюсь, если я пропустил какой-либо ответ.