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
4 个解决方案
#1
你还不认后台处理好,页面直接显示。
#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);
}
}
}
#3
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class Test
{
public static void print(List<Map<String, Integer>> list, String pref, int i,List<String> res)
{
if (i == list.size())
{
res.add(pref.substring(1));
}
else
{
for (Map.Entry<String, Integer> entry : list.get(i).entrySet())
{
print(list, pref + "-" + entry.getValue(), i + 1,res);
}
}
}
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);
List<String> res = new ArrayList<String>();
print(list, "", 0,res);
for(String s : res)
{
System.out.println(s);
}
}
}
#4
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);
aaa(list,0,"");
}
//
public static void aaa(List<Map<String,Integer>> list,int i,String line){
Map<String,Integer> map = list.get(i);
ArrayList<String> list1 = new ArrayList<String>(map.keySet());
if(i<list.size()-1){
for(int j=0;j<list1.size();j++){
String line1 = line;
int k = i+1;
line1 += map.get(list1.get(j));
aaa(list,k,line1);
}
}else{
for(int j=0;j<list1.size();j++){
System.out.println(line+map.get(list1.get(j)));
}
return;
}
}
}
#1
你还不认后台处理好,页面直接显示。
#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);
}
}
}
#3
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class Test
{
public static void print(List<Map<String, Integer>> list, String pref, int i,List<String> res)
{
if (i == list.size())
{
res.add(pref.substring(1));
}
else
{
for (Map.Entry<String, Integer> entry : list.get(i).entrySet())
{
print(list, pref + "-" + entry.getValue(), i + 1,res);
}
}
}
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);
List<String> res = new ArrayList<String>();
print(list, "", 0,res);
for(String s : res)
{
System.out.println(s);
}
}
}
#4
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);
aaa(list,0,"");
}
//
public static void aaa(List<Map<String,Integer>> list,int i,String line){
Map<String,Integer> map = list.get(i);
ArrayList<String> list1 = new ArrayList<String>(map.keySet());
if(i<list.size()-1){
for(int j=0;j<list1.size();j++){
String line1 = line;
int k = i+1;
line1 += map.get(list1.get(j));
aaa(list,k,line1);
}
}else{
for(int j=0;j<list1.size();j++){
System.out.println(line+map.get(list1.get(j)));
}
return;
}
}
}