LinkedListMultimap或MultiMap序列

时间:2015-01-14 09:33:40

标签: java algorithm sorting dictionary multimap

我有以下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);
    }
}

2 个答案:

答案 0 :(得分:0)

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 :(得分:0)

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

  1. 您的程序似乎没有输出任何内容。在那里的某个地方,你会想要以某种方式输出result2
  2. for循环后,c将是您在地图中查找token的最后一个元素时获得的任何内容。您可能希望它是Set,其中包含您在地图中查找token的所有元素所获得的内容。
  3. 要处理问题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));
    }