次のようなマトリックスを作成したいと思います。
これは、、、などが頂点であり、値が頂点が切断されているかどうか、および頂点が接続a
されているかどうかを表すb
、マトリックス内のグラフの変換です。c
0
1
2つの頂点(つまりc
とd
)をランダムに取得し、マトリックス内のそれらの頂点の値にM[c][d]およびM[d][c]としてアクセスしたいと思います。
これどうやってするの?
次のようなマトリックスを作成したいと思います。
これは、、、などが頂点であり、値が頂点が切断されているかどうか、および頂点が接続a
されているかどうかを表すb
、マトリックス内のグラフの変換です。c
0
1
2つの頂点(つまりc
とd
)をランダムに取得し、マトリックス内のそれらの頂点の値にM[c][d]およびM[d][c]としてアクセスしたいと思います。
これどうやってするの?
文字の代わりに整数インデックスを使用するm[2][3]
場合、行列が次のように定義されていれば、と言うことができint[][] m
ます。
文字列座標を使用して値にアクセスする必要がある場合は、GuavaのTableクラスを確認する必要があります。http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/を参照してください。 collect/Table.html。このようにして、次のように行列を宣言し、Table<String,String,String>
:メソッドを使用して値を挿入put(String rowKey, String columnKey, String value)
し、を使用してそれらにアクセスすることができます。get(String rowKey, String columnKey)
文字()をインデックスとして使用したい場合chars
は、別の方法をとる必要があります。char
インデックスとして使用する独自の構造を作成できます。2次元配列は配列の配列と見なすことができるため、Map
またはMap
オブジェクトを使用できます。
これで期待どおりにオブジェクトにアクセスすることはできません。代わりに、を呼び出す必要がありますmap.get('c').get('d')
。
char
別のアプローチは、あなたを対応するインデックスに変換する一種の「ロゼッタストーン」を作成することです。大きなグラフは膨大な行列を生成し、そこでインデックスを取得することは、それらにどのように対処するかによって異なるため、これは小さなグラフに特に役立ちます。例えば:
public class IndexInterpreter {
//Using a switch here to illustrate, you can make your own mapping logic.
public static int getIndex(char letter) {
switch(letter) {
case 'a':
return 0;
case 'b':
return 1;
//the swtich goes on and on...
}
}
}
次に、マトリックスを呼び出しているときに、文字を対応するインデックスに変換します。
int i1 = IndexInterpreter.getIndex('c');
int i2 = IndexInterpreter.getIndex('d');
m[i1][i2]
または、必要に応じて
m[IndexInterpreter.getIndex('c')][IndexInterpreter.getIndex('d')]
マトリックスは2D配列になります
String[][] matrix = new String[6][7]
次に、を使用してデータを入力できます
matrix[1][1] = "1";
あなたがしたい細胞を手に入れるために
String val = mattix[3][5];
このリンクは役立つかもしれません