LinkedListMultimap 或 MultiMap 序列

LinkedListMultimap or MultiMap sequence

我有以下 multiMap:

1st: [3=>[4,5]]
2nd: [2=>[3]]
3rd: [0=>[2]]
4th: [5=>[1]]
5th: [4=>[1]]

我想从中得到序列,例如:

0->2->3->[4,5]->1

可以吗?

这是我试过的方法,但似乎无法正常工作:

// the starting point is given from the start.

Collection<String> col = new HashSet<String>();
col.add("0");
buildPath2(myMultimap, col, result2);

static void buildPath2(Multimap<String, String> path, Collection<String> token, List<Collection<String>> result2) {
    if (token != null) {
        result2.add(token);
        Collection<String> c = null;
        for (String elem: token){
           c = path.get(elem);
        }
        buildPath2(path, c, result2);
    }
}
Choose the starting index
Assign starting index to current index
do
  output path[current index]
  current index= path[current index][some index°]
while current index != starting index

°取决于您的具体政策。通常是列表中的最后一个索引。

您有两个基本问题需要解决。

  1. 你的程序似乎没有输出任何东西。在那里的某个地方,你会想要以某种方式输出 result2
  2. 在您的 for 循环之后,c 将是您在地图中查找 token 的最后一个元素所得到的任何内容。您可能希望它是一个 Set,包含您在地图中查找 token 的所有元素所获得的内容。

要处理问题 2,您可能应该更改

Collection<String> c = null;
for (String elem: token){
   c = path.get(elem);
}

Collection<String> c = new HashSet<>();
for (String elem : token) {
    c.addAll(path.get(elem));
}