Map<String,List<String>>转为List<Map<String,String>>

/**
 * 
 * @param map  输入
 * @param list 输出
 * @param idx     次序
 * @param pathMap 已选
 */
void map2List(Map<String, List<String>> map, List<Map<String, String>> list,
                                    int idx, HashMap<String,String> pathMap){
    if(null == pathMap){
        pathMap = new HashMap<String,String>();
    }
    
    String[] products = map.keySet().toArray(new String[] {});
    Arrays.sort(products);
    
    if (idx + 1 < products.length) {
        List<String> eleList = map.get(products[idx]);
        for (int i = 0; i < eleList.size(); i++) {
            pathMap.put(products[idx], eleList.get(i));
            
            map2List(map, list, idx + 1, pathMap);
        }
    } else if (idx + 1 == products.length) {
        List<String> eleList = map.get(products[idx]);
        for (int i = 0; i < eleList.size(); i++) {
            pathMap.put(products[idx], eleList.get(i));
            
            list.add((Map<String,String>)pathMap.clone());
        }
    }
}

测试代码:

HashMap<String, List<String>> map = new HashMap<String, List<String>>();
List<String> a = new ArrayList<String>();
a.add("a1");
a.add("a2");
a.add("a3");
map.put("a", a);
List<String> b = new ArrayList<String>();
b.add("b1");
b.add("b2");
map.put("b", b);
List<String> c = new ArrayList<String>();
c.add("c1");
map.put("c", c);
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
map2List(map, list, 0, null);
System.out.println(list);

Map<String,List<String>>转为List<Map<String,String>>

时间: 2024-10-07 05:06:31

Map<String,List<String>>转为List<Map<String,String>>的相关文章

如何过滤List&lt;Map&lt;String,Object&gt;&gt; 中的重复Map

最近遇到一个问题,就是如何过滤一个List<Map<String,Object>> 中重复的Map,废话不多说,直接上代码. //去除重复的Map //cfArraylist 表示重复的 List<Map<String,Object>> //listMap 表示去重复数据后的 List<Map<String,Object>> Map<String, Map> msp = new HashMap<String, Map

沃老师学生的成绩+stl string 的删除操作,加map的自动排序

题目链接 思路:stl大法好 将字符的末尾0给去掉,然后比较string的大小,同时用map的自动排序将名字按照字典序输出,>>>stl大法好 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<map> #include<set> #include<vector> using namespa

Java基础知识强化之集合框架笔记60:Map集合之TreeMap(TreeMap&lt;Student,String&gt;)的案例

1. TreeMap(TreeMap<Student,String>)的案例 2. 案例代码: (1)Student.java: 1 package cn.itcast_04; 2 3 public class Student { 4 private String name; 5 private int age; 6 7 public Student() { 8 super(); 9 } 10 11 public Student(String name, int age) { 12 super

gridview在最后默认一个添加更多, 将String的路径转为bitmap

项目遇到,gridview有一个item是点击后选择的,但又新的item加如后这个就不断向后移动 在adapter中将返回的项数加一 if(position<mSelectPath.size()){ //添加list中的数据 }else { image.setImageDrawable(mContext.getResources().getDrawable(R.mipmap.biaoqing)); } class MyGridAdapter extends BaseAdapter{ privat

将javabean转为map类型,然后返回一个map类型的值

/**     *将javabean转为map类型,然后返回一个map类型的值      * @param obj     * @return     */    public static Map<String, Object> beanToMap(Object obj) {        Map<String, Object> params = new HashMap<String, Object>(0);        try {            Prope

在拦截器中获取请求参数,[Ljava.lang.String; cannot be cast to java.lang.String报错

Map<String,Object> parametersmap=invocation.getInvocationContext().getParameters();//获取请求参数                Set<String> parametersset=parametersmap.keySet();                for(String key:parametersset){ System.out.println(key+":"+par

【java】Date与String之间的转换:java.text.SimpleDateFormat、public Date parse(String source) throws ParseException和public final String format(Date date)

1 package 日期日历类; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Date; 6 7 public class TestDate { 8 public static void main(String[] args) { 9 Date date=new java.util.Date(); 10 System.out.println(date);/

string 构造函数,=,整数 赋值给 string 引起的 坑

对string 理解构造和赋值理解不清引起的错误. 起因: string a; int i=1; a=i;//不报错,不警告 int c=330;//大于256 a=c;//不警告,不报错 a=330;//warning: overflow in implicit constant conversion string str=3;// error: invalid conversion from 'int' to 'const char*' string str(3);// error: inv

ExtJS学习-----------Ext.String,ExtJS对javascript中的String的扩展

关于ExtJS对javascript中的String的扩展,能够參考其帮助文档,文档下载地址:http://download.csdn.net/detail/z1137730824/7748893 以下对当中的部分方法进行介绍: (1)capitalize capitalize( String string ) : String 返回一个字符串.该字符串中第一个字母为大写字母 Parameters string : String 要转换的字符串 Returns String 转换后的字符串 (2