Подтвердить что ты не робот

Как получить столбец из двумерного массива java?

Я знаю, что 2d массивы представляют собой массивы массивов. Чтобы получить строку, вы можете сделать:

rowArray = my2Darray[row]

Поскольку каждая строка может быть другого размера, я предполагаю, что она не построена для получения столбца из 2D-массива. Это заставляет меня поверить, что вам нужно будет сделать что-то вроде:

for(int row = 0; row < numRows; row++)
{
    colArray[row] = m2Darray[row][columnOfInterest];
}

Это правильно? Это единственный способ?

4b9b3361

Ответ 1

Если вы заблокированы для использования массива 2d, то да, это он afaik. Однако предложение, которое может помочь вам (если возможно):

Оберните массив в класс, который обрабатывает выборку столбца.

Удачи.

Ответ 2

В Commons math есть некоторые инструменты, которые вы можете проверить:

double[][] data = new double[10][10];
BigMatrix matrix = MatrixUtils.createBigMatrix(data);
matrix.getColumnAsDoubleArray(0);

Библиотека сообществ сообщества

Ответ 3

Твой путь - это путь. Однако, если вы должны делать это много раз, я могу рекомендовать его хранить в столбцах. (или в обоих направлениях)

Ответ 4

int[][] array = new int[rows][coloumn];

for (int i = 0 ; i < array.length ; i++) {
    for (int j = 0 ; j < array[].length; j++) {
        int col = array[j][i]; 
    }
}

Ответ 5

Ну, на самом деле я бы написал это как комментарий, но моя репутация все еще низка, поэтому я должен ответить:

Угадайте, что вы имеете в виду:

for(int row = 0; row < numRows; row++)
{
    colArray[row] = m2Darray[row][columnOfInterest];
}

Кстати: Я полагаю, вы правы. Нет более простого способа.

Ответ 6

На самом деле новая версия Apache Commons (3.5) не имеет класса BigMatrix. Вместо этого мы можем использовать RealMatrix

double[][] data = new double[10][10];
RealMatrix rm = new Array2DRowRealMatrix(data);
rm.getColumn(i);

Ответ 7

Другим способом является сохранение строк в виде столбцов и наоборот. например Мне нужно было сделать то же самое, и я изначально планировал иметь массив с 10 строками и 2 колонами. Из-за этого ограничения я просто поменял свои строки и столбцы и создал массив с 10 столбцами и двумя строками. Затем я могу использовать массив [0], чтобы получить строку из нового массива (который будет столбцом моего исходного массива). Конечно, у вас есть эта гибкость, только если вы являетесь создателем этого массива.

Надеюсь, что это поможет...

Ответ 8

Вы должны использовать класс StringBuilder для добавления нового символа в конце строки

    StringBuilder s=new StringBuilder();
    for(int i=0;i<n;i++)
        s.append(arr[i][column]);

Ответ 9

Просто наткнулся на этот пост случайно. Другой способ выполнения таких операций, как копирование или манипулирование массивами в массивах столбцов, - это перенос вашего массива/матрицы.

Вкратце

  • а. транспонировать 2Darray/matrix (т.е. 6x5 == > 5x6 2Darray)
  • Выполнять операции над массивами столбцов
  • снова транспонировать == > вернуться к исходному 2Darray.

Этот подход был использован при выемке швов - техника обрезки изображения

Ответ 10

попробуйте это

int column = 3;
double result = array[][column];

Удача