2009-07-10 25 views
21

2次元配列は配列の配列であることはわかっています。あなたが行うことができます行を取得するには、次の各行は異なるサイズにすることができますので2D Java配列から列を取得する方法は?

rowArray = my2Darray[row] 

を、私は2次元配列から列を取得するには、それが中に組み込まれていないと仮定しています。

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

これは間違いありませんか?それは唯一の方法ですか?

+1

の最後に新しい文字を追加するのStringBuilderクラスを使用する必要がありますが、[ 'colArrayをもしかしてrow] = m2Darray [row] [columnOfInterest]; '? – ChssPly76

+0

はいありがとうございます:) – Derrick

答えて

8

2dアレイを使用するようにロックされている場合、はい、これはafaikです。ただし、可能な場合は助けてください:

列のフェッチを処理するクラスに配列をラップします。

幸運。

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

もう1つの方法は、列を列として格納し、その逆も同様です。例えば私はまったく同じことをする必要があり、もともと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]; 
    } 
} 
1

この

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

幸運を試してみてください...助け

希望は実際にはApache Commonsの(3.5)の最新バージョンはBigMatrixクラスを持っていません。これに代えて、RealMatrixを使用することができます

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

ちょうどこのポストを偶然見つけました。列の配列のコピーや操作などの操作を実行するもう1つの方法は、配列/行列を転置することです。

まもなく

  • 話します。 2Dアレイ/マトリックスを転置する。6x5 ==> 5x6 2D配列)
  • 列配列の操作を実行します。
  • 元の2D配列に戻します。

このアプローチは、シームカービングに使用されている - 画像トリミング技術

-1

あなたは、文字列

StringBuilder s=new StringBuilder(); 
    for(int i=0;i<n;i++) 
     s.append(arr[i][column]); 
関連する問題