Java 在hashmap中查找序列

Java 在hashmap中查找序列,java,sorting,hashmap,sequence,Java,Sorting,Hashmap,Sequence,我有一个hashmap,它表示[从,到]: 1st: [start->sb1] 2nd: [sb0->sb3] 3rd: [sb1->sb0] 4th: [sb3->end] 我想知道是否有办法找到正确的顺序,例如: start->sb1->sb0->sb3->end 如果您知道开始键,它非常简单: String key = "start"; while (key != null && !key.equals("end")) {

我有一个hashmap,它表示[从,到]:

1st: [start->sb1]
2nd: [sb0->sb3]
3rd: [sb1->sb0]
4th: [sb3->end]
我想知道是否有办法找到正确的顺序,例如:

start->sb1->sb0->sb3->end

如果您知道
开始
键,它非常简单:

String key = "start";
while (key != null && !key.equals("end")) {
    System.out.print(key + "->");
    key = map.get(key);
}
if (key != null)
    System.out.println(key);

这假设映射的键和值是字符串。

如果您知道
开始
键,则非常简单:

String key = "start";
while (key != null && !key.equals("end")) {
    System.out.print(key + "->");
    key = map.get(key);
}
if (key != null)
    System.out.println(key);

这假设映射的键和值是字符串。

简单的递归可以做到这一点:

public static void main(String... args) {
    Map<String, String> path = new HashMap<>();
    path.put("start", "sb1");
    path.put("sb0", "sb3");
    path.put("sb1", "sb0");
    path.put("sb3", "end");

    printPath(path, "start");
}

void printPath(Map<String, String> path, String next) {
    if (next != null) {
        System.out.print(next);
        printPath(path, path.get(next));
    }
}

简单的递归可以做到这一点:

public static void main(String... args) {
    Map<String, String> path = new HashMap<>();
    path.put("start", "sb1");
    path.put("sb0", "sb3");
    path.put("sb1", "sb0");
    path.put("sb3", "end");

    printPath(path, "start");
}

void printPath(Map<String, String> path, String next) {
    if (next != null) {
        System.out.print(next);
        printPath(path, path.get(next));
    }
}

当然,有办法。你试过什么?当然,有办法。您尝试过什么?是否可以使用com.google.common.collect.Multimap修改您的示例?是否可以使用com.google.common.collect.Multimap修改您的示例?