Ответ 1
Если вы заблокированы для использования массива 2d, то да, это он afaik. Однако предложение, которое может помочь вам (если возможно):
Оберните массив в класс, который обрабатывает выборку столбца.
Удачи.
Я знаю, что 2d массивы представляют собой массивы массивов. Чтобы получить строку, вы можете сделать:
rowArray = my2Darray[row]
Поскольку каждая строка может быть другого размера, я предполагаю, что она не построена для получения столбца из 2D-массива. Это заставляет меня поверить, что вам нужно будет сделать что-то вроде:
for(int row = 0; row < numRows; row++)
{
colArray[row] = m2Darray[row][columnOfInterest];
}
Это правильно? Это единственный способ?
Если вы заблокированы для использования массива 2d, то да, это он afaik. Однако предложение, которое может помочь вам (если возможно):
Оберните массив в класс, который обрабатывает выборку столбца.
Удачи.
В Commons math есть некоторые инструменты, которые вы можете проверить:
double[][] data = new double[10][10];
BigMatrix matrix = MatrixUtils.createBigMatrix(data);
matrix.getColumnAsDoubleArray(0);
Твой путь - это путь. Однако, если вы должны делать это много раз, я могу рекомендовать его хранить в столбцах. (или в обоих направлениях)
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];
}
}
Ну, на самом деле я бы написал это как комментарий, но моя репутация все еще низка, поэтому я должен ответить:
Угадайте, что вы имеете в виду:
for(int row = 0; row < numRows; row++)
{
colArray[row] = m2Darray[row][columnOfInterest];
}
Кстати: Я полагаю, вы правы. Нет более простого способа.
На самом деле новая версия Apache Commons (3.5) не имеет класса BigMatrix. Вместо этого мы можем использовать RealMatrix
double[][] data = new double[10][10];
RealMatrix rm = new Array2DRowRealMatrix(data);
rm.getColumn(i);
Другим способом является сохранение строк в виде столбцов и наоборот. например Мне нужно было сделать то же самое, и я изначально планировал иметь массив с 10 строками и 2 колонами. Из-за этого ограничения я просто поменял свои строки и столбцы и создал массив с 10 столбцами и двумя строками. Затем я могу использовать массив [0], чтобы получить строку из нового массива (который будет столбцом моего исходного массива). Конечно, у вас есть эта гибкость, только если вы являетесь создателем этого массива.
Надеюсь, что это поможет...
Вы должны использовать класс StringBuilder для добавления нового символа в конце строки
StringBuilder s=new StringBuilder();
for(int i=0;i<n;i++)
s.append(arr[i][column]);
Просто наткнулся на этот пост случайно. Другой способ выполнения таких операций, как копирование или манипулирование массивами в массивах столбцов, - это перенос вашего массива/матрицы.
Вкратце
Этот подход был использован при выемке швов - техника обрезки изображения
попробуйте это
int column = 3;
double result = array[][column];
Удача