我想创建一个像这样的矩阵:
它是矩阵中图的变换,其中、a
等是顶点,值表示顶点是否断开连接以及它们是否连接。b
c
0
1
我随机取两个顶点(即c
和d
),我想以 M[c][d] 和 M[d][c] 的形式访问矩阵中这些顶点的值。
我怎样才能做到这一点?
我想创建一个像这样的矩阵:
它是矩阵中图的变换,其中、a
等是顶点,值表示顶点是否断开连接以及它们是否连接。b
c
0
1
我随机取两个顶点(即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/收集/Table.html。这样,您将能够声明您的矩阵,如:并使用:方法Table<String,String,String>
插入值并使用访问它们put(String rowKey, String columnKey, String value)
get(String rowKey, String columnKey)
如果您想使用字母 ( chars
) 作为索引,那么您将不得不采取另一种方法。您可以创建自己的结构char
作为索引。由于二维数组可以看作是数组的数组,因此可以使用 aMap
或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')]
矩阵将是一个二维数组
String[][] matrix = new String[6][7]
然后你可以使用
matrix[1][1] = "1";
为了得到你想要的细胞,你会做
String val = mattix[3][5];
此链接可能会有所帮助