Хранение матрицы в массиве - PullRequest
1 голос
/ 17 марта 2019

Я пытаюсь сделать Двумерную Матрицу как ADT.Так что с учетом интерфейса Matrix<T> речь идет как о двумерном массиве.Таким образом, я могу реализовать этот интерфейс, используя двумерный Arrar Object[][] matrix в качестве фона.Теперь я пытаюсь реализовать интерфейс с массивом Object[] matrix в качестве фона (т.е. хранить матрицу в массиве).В я нашел этот вопрос , как хранить двумерный массив в одномерном массиве, я хочу сделать то же самое, но без использования двумерного массива.Я ограничен, чтобы не использовать список.Так что любое предложение?

РЕДАКТИРОВАТЬ: введите кодменее эффективен, чем ожидалось, поэтому я хочу создать конструктор с другим типом коллекции в качестве параметра.

1 Ответ

1 голос
/ 17 марта 2019

Любой двумерный массив можно представить как одномерный массив, просто «развернув» строки и запомнив количество столбцов (то есть ширину). Например:

int[] grid = new int[width * height];

int get(int row, int column) {
    return grid[row * this.width + column];
}
...