Java数据,为空补零。求大神帮忙

图片说明
图片说明
这是控制台输出的数据:通州这里有问题,
{首都职工体质促进中心=[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, null, null, null, null, null, null, null, 166.0, null, null, null, null, null, null, null, null, 159.5, null, null, null, null, null, null, null, 180.0, null, null, null, null, null, null, null, null, 164.08]}

这是查询数据库得到的数据:List<,Map<,String, Object>> 数据类型 、、[{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=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=164.08, 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]。
我的思路是通过图上的list,这个list里面是日期。遍历这个List<,Map<,String, Object>>得到areaName,data,riqi。在通过遍历list,判断日期,如果日期包含遍历出来的riqi,就正常存到areaData,没有就补null。
但是得到的结果,不是我想要的,通州那个有问题

直接在sql语句中使用IFNULL(字段名称,0)就可以,这个是在mysql使用的

你查出来的数据List<,Map<,String, Object>> list集合中前三个map集合quyu都是通州啊

hashmap的key是唯一的 你从datalist里取出SUOSHUQUYU作为map的key就不对 因为你去出来的 通州区 这个值不是唯一的,用他在作为areadata的key自然就会出问题

oracle好像有个nvl函数可以

 Map<String,Double[]> areaData =new HashMap<>();
Double datass[] = new double[list.size()];


for(int i=0;i<list.size();i++){
    int b = list.get(i);
    if(b.toSting().Equals(riqi)){
        if(areaData.get(areaName)!=null){
            Double[] datas = areaData.get(areaName);
            datas[i] = data;
        }
    }
}

我这么改的 没写全 你应该能看懂我的意思把

在sql中使用 nvl(字段名,0) 这个方法

楼主,这个问题还没解决?我记得上次就是这样的数据