RT:
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Test
{
public static void main(String[] args)
{
Map<String,Integer> map1 = new LinkedHashMap<String,Integer>();
map1.put("a_1",1);
map1.put("a_2",2);
Map<String,Integer> map2 = new LinkedHashMap<String,Integer>();
map2.put("b_1",1);
map2.put("b_2",2);
map2.put("b_3",3);
Map<String,Integer> map3 = new LinkedHashMap<String,Integer>();
map3.put("c_1",1);
map3.put("c_2",2);
List<Map<String,Integer>> list = new ArrayList<Map<String,Integer>>();
list.add(map1);
list.add(map2);
list.add(map3);
//TODO
}
}
希望得到所有的val的组合,每个Map中取一个:
1-1-1
1-1-2
1-2-1
1-2-2
1-3-1
1-3-2
2-1-1
2-1-2
2-2-1
2-2-2
2-3-1
2-3-2
------解决方案--------------------
public static void main(String[] args) {
Map<String, Integer> map1 = new LinkedHashMap<String, Integer>();
map1.put("a_1", 1);
map1.put("a_2", 2);
Map<String, Integer> map2 = new LinkedHashMap<String, Integer>();
map2.put("b_1", 1);
map2.put("b_2", 2);
map2.put("b_3", 3);
Map<String, Integer> map3 = new LinkedHashMap<String, Integer>();
map3.put("c_1", 1);
map3.put("c_2", 2);
List<Map<String, Integer>> list = new ArrayList<Map<String, Integer>>();
list.add(map1);
list.add(map2);
list.add(map3);
print(list, "", 0);
}
public static void print(List<Map<String, Integer>> list, String pref, int i) {
if (i == list.size()) {
System.out.println(pref.substring(1));
} else {
for (Map.Entry<String, Integer> entry : list.get(i).entrySet()) {
print(list, pref + "-" + entry.getValue(), i + 1);
}
}
}