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
°取决于您的具体政策。通常是列表中的最后一个索引。
您有两个基本问题需要解决。
- 你的程序似乎没有输出任何东西。在那里的某个地方,你会想要以某种方式输出
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));
}
我有以下 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
°取决于您的具体政策。通常是列表中的最后一个索引。
您有两个基本问题需要解决。
- 你的程序似乎没有输出任何东西。在那里的某个地方,你会想要以某种方式输出
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));
}