我有以下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);
}
}
答案 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)
您有两个基本问题需要解决。
result2
。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));
}