简单的递归就可以解决问题:
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));
}
}
这个 impl 简单地打印 System.out 上的所有条目。我假设您宁愿将它们收集在 List 或类似的地方,如果它们稍后将在程序中使用。
List<String> result = new ArrayList<>();
buildPath(path, "start", result);
void buildPath(Map<String, String> path, String token, List<String> result) {
if (token != null) {
result.add(token);
buildPath(path, path.get(token), result);
}
}