我有 3 组不同的数字,例如
a={1,3,4}
b={2,6}
c={0}
集合的大小可以是可变的,例如一组包含 5 个元素,另一组包含 3 个元素,等等。
我已将这些值保存在 java 的哈希图中,
HashMap H=new HashMap<String,HashSet<Integer>>();
在本例中,H 的键是“a”、“b”和“c”。
我想让这三组中的数字所有可能的组合,即:
1,2,0
1,6,0
3,2,0
3,6,0
4,2,0
4,6,0
但我有一个问题。集合的数量也可以是可变的,即我的 HashMap 可以有 3 到 10 个键。你知道我应该如何迭代哈希图,以便我可以做出所有可能的组合吗?
解答:我将 HashMap 更改为 Vector,但是,它也可以与 HashMap 一起使用,只需稍作改动
调用函数如下:
Iterate_over_map(0,new Integer[h.size()],h,final_list);
Iterate_over_map(int count,Integer[] curr,Vector<HashSet<Integer>> h,Vector<Integer[]> final_list)
{
if(count>=h.size())
{
final_list.addElement(curr.clone());
return;
}
int next_count=count+1;
for (Integer element:h.elementAt(count))
{
curr[count]=element;
Iterate_over_map(next_count,curr,h,final_list);
}
}
旧解决方案
for(int x:H.get("a"))
{
v[0]=x;//node1 (an ortholog of node1)
for(int y:H.get("b"))
{
v[1]=y;//node2 (an ortholog of node2)
for(int z:H.get("c"))
{
v[2]=z;//node3 (an ortholog of node3)
}
}
}
多谢。