2009-07-10 149 views
21

我知道2d數組是數組的數組。爲了得到一排,你可以這樣做:如何從2D java數組中獲取列?

rowArray = my2Darray[row] 

由於各行可以具有不同的尺寸,我假設它沒有內置於得到一個二維數組的一列。它讓我相信你必須這樣做:

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

這是正確的嗎?這是唯一的方法嗎?

+1

您是不是要找'colArray [結束追加新角色行] = m2Darray [row] [columnOfInterest];`? – ChssPly76 2009-07-10 21:15:34

回答

8

如果你被鎖定使用2d數組,那麼是的,這是它的一個缺點。然而,一個可能對你有幫助的建議(如果可能的話):

將數組換成處理列取回的類。

祝你好運。

2

你的方式是走的路。但是,如果您必須多次執行此操作,我可能會建議將其存儲在列中。 (或雙向)

7

下議院數學有一定的工具,你可能想看看:

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

Commons Math Library

1

嗯,事實上我會寫這個的評論,但我的名聲仍然是低,所以我來回答:

猜你的意思是:

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

順便說一句:我想你是對的。沒有更簡單的方法。

0

另一種方法是將行存儲爲列,反之亦然。例如我需要做同樣的事情,我原本打算有10行2列的數組。由於這個限制,我只是交換了我的行和列,並創建了一個包含10列和2行的數組。然後我可以使用array [0]從新數組(這將是我原始數組的一列)中獲取行。當然,只有當你是該陣列的創建者時,纔有這種靈活性。

希望幫助...

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

試試這個

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

好運

1

其實阿帕奇百科全書(3.5)的最新版本沒有BigMatrix類。相反,我們可以使用RealMatrix

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

剛剛碰到這個帖子偶然。在列數組上執行操作(例如數組複製或操作)的另一種方法是轉置您的數組/矩陣。

不久上講

  • 一個。轉置2D陣列/矩陣(即6x5 ==> 5x6 2D陣列)
  • 在列陣列上執行操作
  • 再次轉置==>返回到您的原始2D陣列。

這種方法已經在縫刻被使用 - 圖像剪切技術

-1

你必須使用StringBuilder類的字符串

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