lurenjia1993
2020-04-14 18:48
采纳率: 63.2%
浏览 312
已采纳

java Map map类型转换问题,速度解答

{date=2020-03-19, dtid=34,35,36, da=1,1,2}

这个类型的数据怎么转换为

date=2020-03-19{
{
dtid=34,
da=1
},
{
dtid=35,
da=1
},
{
dtid=36,
da=2
}
}

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 高冷的自卑患者 2020-04-15 11:28
    已采纳

    图片说明

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • dabocaiqq 2020-04-15 00:42
    评论
    解决 无用
    打赏 举报
  • 毕小宝 2020-04-15 13:23

    首先,以 date 为新的结果的 key ,然后,以 dtid 和 da 一一对应,形成一个新的数据类型,作为 Map 的值,值类型为 List 。
    参考代码:

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class DataInfo {
        private String dtid ;
        private String da ;
    
        public DataInfo(String dtid, String da) {
            super();
            this.dtid = dtid;
            this.da = da;
        }
        public String getDtid() {
            return dtid;
        }
        public void setDtid(String dtid) {
            this.dtid = dtid;
        }
        public String getDa() {
            return da;
        }
        public void setDa(String da) {
            this.da = da;
        }
    
        @Override
        public String toString() {
            return "DataInfo [dtid=" + dtid + ", da=" + da + "]";
        }
    
        public static void main(String[] args) {
            Map<String,String> map = new HashMap<String,String>();
            map.put("date","2020-03-19");
            map.put("dtid","34,35,36");
            map.put("da","1,1,2");
    
            String date = map.get("date");
            String dtid = map.get("dtid");
            String da = map.get("da");
            String[] split1 = dtid.split(",");
            String[] split2 = da.split(",");
            if(split1.length != split2.length) {
                System.out.println("bad data.");
            }else {
                Map<String,List<DataInfo>> lastResult = new HashMap<String,List<DataInfo>>();
                List<DataInfo> datas = new ArrayList<DataInfo>();
                lastResult.put(date, datas);
                for(int i=0;i<split1.length;i++) {
                    DataInfo temp = new DataInfo(split1[i],split2[i]);
                    datas.add(temp);
                }
                System.out.println(date+","+lastResult.get(date));
            }
        }
    
    }
    
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题