0

我想创建一个像这样的矩阵:

矩阵

它是矩阵中图的变换,其中、a等是顶点,值表示顶点是否断开连接以及它们是否连接。bc01

我随机取两个顶点(即cd),我想以 M[c][d] 和 M[d][c] 的形式访问矩阵中这些顶点的值。

我怎样才能做到这一点?

4

3 回答 3

2

如果您将使用整数索引而不是字母,您将能够说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)

于 2012-10-02T20:01:08.313 回答
1

如果您想使用字母 ( chars) 作为索引,那么您将不得不采取另一种方法。您可以创建自己的结构char作为索引。由于二维数组可以看作是数组的数组,因此可以使用 aMapMap对象。

您将无法以您期望的方式访问对象,而是必须调用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')]
于 2012-10-02T20:19:09.430 回答
0

矩阵将是一个二维数组

String[][] matrix = new String[6][7]

然后你可以使用

matrix[1][1] = "1";

为了得到你想要的细胞,你会做

String val = mattix[3][5];

链接可能会有所帮助

于 2012-10-02T20:06:01.230 回答