JAVA数据格式转化,为空不null、求代码,

查询数据库得到数据,List,>数据类型
[{pjcj=161.0, CESHIRIQI=2011, SUOSHUQUYU=通州区}, {pjcj=166.0, CESHIRIQI=2012, SUOSHUQUYU=通州区}, {pjcj=159.5, CESHIRIQI=2014, SUOSHUQUYU=通州区}, {pjcj=180.0, CESHIRIQI=2015, SUOSHUQUYU=通州区}, {pjcj=164.08, CESHIRIQI=2017, SUOSHUQUYU=通州区},{pjcj=140.5, CESHIRIQI=2016, SUOSHUQUYU=东城区}, {pjcj=167.94, CESHIRIQI=2016, SUOSHUQUYU=密云区}, {pjcj=169.45, CESHIRIQI=2016, SUOSHUQUYU=房山区}, {pjcj=161.91, CESHIRIQI=2016, SUOSHUQUYU=昌平区}, {pjcj=166.75, CESHIRIQI=2017, SUOSHUQUYU=亦庄经济开发区}, {pjcj=162.63, CESHIRIQI=2017, SUOSHUQUYU=延庆}, {pjcj=163.21, CESHIRIQI=2017, SUOSHUQUYU=怀柔区}, {pjcj=166.43, CESHIRIQI=2017, SUOSHUQUYU=石景山区}, {pjcj=167.53, CESHIRIQI=2017, SUOSHUQUYU=门头沟区}, {pjcj=164.37, CESHIRIQI=2017, SUOSHUQUYU=顺义区}, {pjcj=166.58, CESHIRIQI=2017, SUOSHUQUYU=首都职工体质促进中心}]

还有个日期集合,list [2011,2012,2013,2014,2015,2016,2017]。
我想转换成 Map>类型。通过这个日期的集合判断如果这个区的时间,如果没有其中的一个时间,就将数据,设置为null。比如,,,,,{首都职工体质促进中心=[null, null, null, null, null, null, 166.58], 怀柔区=[null, null, null, null, null, null, 163.21], 房山区=[null, null, null, null, null, 169.45, null], 门头沟区=[null, null, null, null, null, null, 167.53], 石景山区=[null, null, null, null, null, null, 166.43], 东城区=[null, null, null, null, null, 140.5, null], 昌平区=[null, null, null, null, null, 161.91, null], 亦庄经济开发区=[null, null, null, null, null, null, 166.75], 延庆=[null, null, null, null, null, null, 162.63], 密云区=[null, null, null, null, null, 167.94, null], 顺义区=[null, null, null, null, null, null, 164.37], 通州区=[161.0, 166.0, null, 159.5, 180.0, null, 164.08]}这种,
求代码,,真的不知道这怎么写了

 List<Map> data = null;//你的一大串

        Map<String, Double[]> result = new HashMap<String, Double[]>();//结果
        for (Map m:data) {
            String qy = m.get("SUOSHUQUYU").toString();//假设是String类型 至于具体是什么类型你自己看着办
            double pjcj = (Double) m.get("pjcj");//假设是double类型 至于具体是什么类型你自己看着办
            int rq = (Integer) m.get("CESHIRIQI");//假设是int类型 至于具体是什么类型你自己看着办
            //如果没有这个记录 重新插入
            if (!result.containsKey(qy)) {
                Double[] i = new Double[7];//已知2011~2017
                i[rq - 2011] = pjcj;
                result.put(qy, i);
            } else { //存在这个记录就更新
                Double[] i = result.get(qy);
                if (i[rq - 2011] == null) {
                    i[rq - 2011] = pjcj;
                } else {
                    i[rq - 2011] = (i[rq - 2011] + pjcj) / 2;
                }
            }
        }

之前有人问过这个问题

你之前不是要填0么 现在怎么要填null了。

  • //时间原因,细节的数据空值判断我就不写了,下面开始吧
  • //数据库查询列表集合,假设名称为 List entityList,entity为列表对应Model对象类型,日期列表名称为List dateList
  • String dateString="";
  • for(String str:dateList){
  • dateString+=dateString.equals("")?str:","+str;
  • }
  • List>mapList=new ArrayList>();
  • String areasStr="";
  • for(entity:entityList){
  • boolean isExist=false;
  • if(!areasStr.contains(entity.get("SUOSHUQUYU").toString())){
  • areasStr+=areasStr.equals("")?entity.get("SUOSHUQUYU").toString():","+entity.get("SUOSHUQUYU").toString();
  • }
  • for(Mapmap : mapList){
  • if(map.get(entity.get("SUOSHUQUYU").toString())!=null){
  • isExist=true;
  • String valueStr=entity.get("SUOSHUQUYU").toString();
  • if(valueStr.contains(entity.get("CESHIRIQI").toString())){
  • valueStr.replace(entity.get("CESHIRIQI").toString(),entity.get("pjcj").toString());
  • }
  • entity.put("SUOSHUQUYU",valueStr);
  • break;
  • }
  • }
  • if(!isExist){
  • MapnewMap=new HashMap();
  • String valueStr=dateString;
  • if(valueStr.contains(entity.get("CESHIRIQI").toString())){
  • valueStr.replace(entity.get("CESHIRIQI").toString(),entity.get("pjcj").toString());
  • }
  • newMap.put(entity.get("SUOSHUQUYU").toString(),dateString);
  • mapList.add(newMap);
  • }
  • }
  • //不存在的日期替换为null
  • String[]areasArray=areasStr.split(",");
  • for(String area:areasArray){
  • for(Mapmap : mapList){
  • if(map.get(area)!=null){
  • String valueStr=map.get(area).toString();
  • for(String date:dateList){
  • if(valueStr.contains(date)){
  • valueStr.replace(date,"null");
  • }
  • }
  • break;
  • }
  • }
  • }
  • //结果集mapList结果如:
  • [
  • {key:"通州区",value:"161.0,166.0,null,159.5,180.0,null,164.08"},
  • {key:"东城区}",value:"null,null,null,null,null,140.5,null"},
  • {key:"密云区",value:"null,null,null,null,null,167.94,null"},
  • {key:"房山区",value:"null,null,null,null,null,169.45,null"},
  • {key:"昌平区",value:"null,null,null,null,null,161.91,null"},
  • .....
  • ]
  • //上面忘记转码了,以这个为准
  • //时间原因,细节的数据空值判断我就不写了,下面开始吧
  • //数据库查询列表集合,假设名称为 List<entity> entityList,entity为列表对应Model对象类型,日期列表名称为List<String> dateList
  • String dateString="";
  • for(String str:dateList){
  • dateString+=dateString.equals("")?str:","+str;
  • }
  • List<Map<String,Object>>mapList=new ArrayList<Map<String,Object>>();
  • String areasStr="";
  • for(entity:entityList){
  • boolean isExist=false;
  • if(!areasStr.contains(entity.get("SUOSHUQUYU").toString())){
  • areasStr+=areasStr.equals("")?entity.get("SUOSHUQUYU").toString():","+entity.get("SUOSHUQUYU").toString();
  • }
  • for(Map<String,Object>map : mapList){
  • if(map.get(entity.get("SUOSHUQUYU").toString())!=null){
  • isExist=true;
  • String valueStr=entity.get("SUOSHUQUYU").toString();
  • if(valueStr.contains(entity.get("CESHIRIQI").toString())){
  • valueStr.replace(entity.get("CESHIRIQI").toString(),entity.get("pjcj").toString());
  • }
  • entity.put("SUOSHUQUYU",valueStr);
  • break;
  • }
  • }
  • if(!isExist){
  • Map<String,Object>newMap=new HashMap<String,Object>();
  • String valueStr=dateString;
  • if(valueStr.contains(entity.get("CESHIRIQI").toString())){
  • valueStr.replace(entity.get("CESHIRIQI").toString(),entity.get("pjcj").toString());
  • }
  • newMap.put(entity.get("SUOSHUQUYU").toString(),dateString);
  • mapList.add(newMap);
  • }
  • }
  • //不存在的日期替换为null
  • String[]areasArray=areasStr.split(",");
  • for(String area:areasArray){
  • for(Map<String,Object>map : mapList){
  • if(map.get(area)!=null){
  • String valueStr=map.get(area).toString();
  • for(String date:dateList){
  • if(valueStr.contains(date)){
  • valueStr.replace(date,"null");
  • }
  • }
  • break;
  • }
  • }
  • }
  • //结果集mapList结果如:
  • [
  • {key:"通州区",value:"161.0,166.0,null,159.5,180.0,null,164.08"},
  • {key:"东城区}",value:"null,null,null,null,null,140.5,null"},
  • {key:"密云区",value:"null,null,null,null,null,167.94,null"},
  • {key:"房山区",value:"null,null,null,null,null,169.45,null"},
  • {key:"昌平区",value:"null,null,null,null,null,161.91,null"},
  • .....
  • ]