1. ホーム
  2. java

[解決済み] Javaで2次元の行列を表現するには?

2022-03-03 12:46:55

質問

私はJavaで2Dの行列(2つの値で構成)と1Dのベクトルを作成する必要があります。個々の要素だけでなく、個々の行や列にもアクセスできるようにする必要があります。さらに、スレッドセーフ(スレッドが同時に書き込む)である必要があります。おそらく後で、私はいくつかの行列演算も必要になるでしょう。

どのようなデータ構造が最適なのでしょうか?単なる2次元配列かTreeMapか?それとも、何か素晴らしい外部ライブラリがあるのでしょうか?

どのように解決するのですか?

2次元配列にはVectorを使用します。それは スレッドセーフ .

Vector<Vector<Double>>  matrix= new Vector<Vector<Double>>();

    for(int i=0;i<2;i++){
        Vector<Double> r=new Vector<>();
        for(int j=0;j<2;j++){
            r.add(Math.random());
        }
        matrix.add(r);
    }
    for(int i=0;i<2;i++){
        Vector<Double> r=matrix.get(i);
        for(int j=0;j<2;j++){
            System.out.print(r.get(j));
        }
        System.out.println();
    }

これが行列のインデックスである場合

00 01

10 11

Specifixのインデックス値は、次のように取得できます。

Double r2c1=matrix.get(1).get(0); //2nd row 1st column

をご覧ください。 ベクター