У меня 3 различных наборов чисел, например
а = {1,3,4}
Ь = {2,6}
с = {0}Итерация над наборами чисел
размер наборов может быть переменным, например один комплект из 5 элементов, другие с 3 и т.д.
Я сохранил эти значения в HashMap в Java,
HashMap H=new HashMap<String,HashSet<Integer>>();
для этого примера, ключи Н «а», «б» , и "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);
}
}
OLD раствора
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)
}
}
}
большое спасибо.
Является ли это домашнее задание? – MarioDS
нет, это не домашнее задание. это очень небольшая часть моего проекта. – Pegah
вы можете использовать итератор на hashmap; cf example http://stackoverflow.com/questions/1066589/java-iterate-through-hashmap – Kidi