2009-07-10 10 views
21

So che gli array 2d sono matrici di array. Per ottenere una riga si può fare:Come ottenere una colonna da un array java 2D?

rowArray = my2Darray[row] 

Poiché ogni riga può essere una dimensione diversa, sto supponendo che non è costruita per ottenere una colonna da una matrice 2D. Mi porta a credere che dovresti fare qualcosa del tipo:

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

È corretto? È l'unico modo?

+1

Forse intendevi 'colArray [ riga] = m2Darray [riga] [columnOfInterest]; '? – ChssPly76

+0

sì grazie :) – Derrick

risposta

8

Se si è bloccati sull'uso di un array 2d, allora sì, questo è tutto. Tuttavia, un suggerimento che può aiutarti (se possibile):

Avvolgere la matrice in una classe che gestisce il recupero della colonna.

Buona fortuna.

2

Il tuo modo è la strada da percorrere. Tuttavia, se devi farlo molte volte, potrei raccomandare di archiviarlo in colonne. (o in entrambe le direzioni)

7

Commons matematica ha alcuni strumenti che si potrebbe desiderare di controllare:

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

Commons Math Library

1

Beh in realtà mi piacerebbe scrivere questo come un commento, ma la mia reputazione è ancora da basso, quindi devo rispondere:

Indovinate cercavi:

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

BTW: Suppongo che tu abbia ragione. Non esiste un modo più semplice.

0

Un altro modo è quello di memorizzare le righe come colonne e viceversa. per esempio. Avevo bisogno di fare esattamente la stessa cosa e inizialmente stavo progettando di avere un array con 10 righe e 2 colonne. A causa di questa limitazione, ho appena scambiato le mie righe e colonne e creato un array con 10 colonne e 2 righe. Quindi posso usare l'array [0] per ottenere la riga dal nuovo array (che sarebbe una colonna del mio array originale). Certo, hai questa flessibilità solo se sei il creatore di quell'array.

Speranza che aiuta ...

2
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]; 
    } 
} 
-4

provare questo

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

Good Luck

1

In realtà l'ultima versione di Apache Commons (3.5) non ha classe BigMatrix. Invece di questo possiamo usare RealMatrix

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

Appena trovato questo post per caso. Un altro modo per eseguire operazioni come la copiatura o la manipolazione di array sugli array di colonne è la trasposizione dell'array/matrice.

Poco parlando

  • a. trasporre 2Darray/matrice (ad es.6x5 ==> 5x6 2Darray)
  • Esegui operazioni su array di colonne
  • trasponi nuovamente ==> torna al tuo 2Darray originale.

Questo approccio sono stati utilizzati in seam carving - ritaglio tecnica

-1

è necessario utilizzare classe StringBuilder per aggiungere nuovo personaggio alla fine di una stringa

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