Помимо проблем с синтаксисом, мне кажется странным использовать массив и связанный список для представления матрицы. Чтобы иметь возможность доступа к произвольным ячейкам матрицы, вы, вероятно, захотите, чтобы фактический массив или по крайней мере ArrayList
содержал строки, так как LinkedList
должен пройти весь список от первого элемента до любого конкретного элемента, O(n)
операция, в отличие от гораздо более быстрого O(1)
с ArrayList
или реального массива.
Поскольку вы упомянули, что эта матрица является разреженной, возможно, лучший способ хранения данных - это карта карт, где ключ на первой карте представляет индекс строки, а его значение - карта строки, ключи которой индекс столбца, со значением, являющимся вашим классом IntegerNode. Таким образом:
private Map<Integer, Map<Integer, IntegerNode>> myMatrix = new HashMap<Integer, Map<Integer, IntegerNode>>();
// access a matrix cell:
int rowIdx = 100;
int colIdx = 30;
Map<Integer, IntegerNode> row = myMatrix.get(rowIdx); // if null, create and add to matrix
IntegerNode node = row.get(colIdx); // possibly null
Если вам нужно иметь возможность обходить матрицу строка за строкой, вы можете сделать карту строк типом TreeMap
, и то же самое для обхода столбцов в порядке индекса, но если вам не нужны эти случаи, HashMap
быстрее TreeMap
. Конечно, были бы полезны вспомогательные методы для получения и установки произвольной ячейки, обрабатывающие неустановленные нулевые значения.