邻接矩阵,其中列和行是字符串

时间:2017-03-26 02:51:08

标签: java arrays string graph

需要创建一个Adjacency矩阵,其中行和列是字符串,存储在矩阵中的值是0或1,表示是否存在从源到dest的连接。

例如:如果a-> b,b-> c是连接,则矩阵应如下所示:

initialization
do {
    if (!termination) break;
    body
    increment
} while (true);

a 0 1 0

b 0 0 1

c 0 0 0

正在寻找一种解决方案来实现这一点,如矩阵[a] [b] = 1; 当我们尝试使用字符串而不是整数位置访问矩阵时会抛出错误。

1 个答案:

答案 0 :(得分:0)

您可以尝试编写字符串代码。例如:

    Map<String, Integer> codec = new HashMap<String, Integer>() {{
        put("a", 0);
        put("b", 1);
        put("c", 2);
    }};
    int adjMatrix[][] = new int[][]{
            {0, 1, 0},
            {0, 0, 1},
            {0, 0, 0}
    };

    System.out.println(adjMatrix[codec.get("a")][codec.get("b")]); //prints "1"

或者您可以尝试使用Map s:

    Map<String, Map<String, Integer>> adjMatrix = new HashMap<>();
    Map<String, Integer> aRow = new HashMap<>();
    aRow.put("a", 0);
    aRow.put("b", 1);
    aRow.put("c", 0);
    Map<String, Integer> bRow = new HashMap<>();
    bRow.put("a", 0);
    bRow.put("b", 0);
    bRow.put("c", 1);
    Map<String, Integer> cRow = new HashMap<>();
    cRow.put("a", 0);
    cRow.put("b", 0);
    cRow.put("c", 0);
    adjMatrix.put("a", aRow);
    adjMatrix.put("b", bRow);
    adjMatrix.put("c", cRow);

    System.out.println(adjMatrix.get("a").get("b")); // prints "1"