Java请求返回值不存在数据填充为0

57 篇文章 3 订阅
12 篇文章 0 订阅
"data": [
    {
      "QUARTER": 1,
      "rate": 9.28,
      "energyGasCarbonEmissions": 0.1975,
      "dieselCarbonEmissions": 1.8319
    },
    {
      "QUARTER": 3,
      "rate": 0,
      "energyGasCarbonEmissions": 0.1757,
      "dieselCarbonEmissions": 0
    },
    {
      "QUARTER": 4,
      "rate": 23.22,
      "energyGasCarbonEmissions": 0.1464,
      "dieselCarbonEmissions": 3.3998
    }
  ]

上例不存在第二季度,需要填充为0

"data": [
    {
      "QUARTER": 1,
      "rate": 9.28,
      "energyGasCarbonEmissions": 0.1975,
      "dieselCarbonEmissions": 1.8319
    },
    {
      "QUARTER": 2,
      "rate": 0,
      "energyGasCarbonEmissions": 0,
      "dieselCarbonEmissions": 0
    },
    {
      "QUARTER": 3,
      "rate": 0,
      "energyGasCarbonEmissions": 0.1757,
      "dieselCarbonEmissions": 0
    },
    {
      "QUARTER": 4,
      "rate": 23.22,
      "energyGasCarbonEmissions": 0.1464,
      "dieselCarbonEmissions": 3.3998
    }
  ]

代码实现方式:

public List<Map<String, Object>> statisCarbonEmissionsRate(Map<String, Object> params) {
		List<Map<String, Object>> results = emmissionsReductionInputMapper.statisCarbonEmissionsRate(params);
		if(results==null||results.size()==0) {
			return results;
		}
		//填充不存在的quarter
		Set<String> set = new HashSet<String>();
		for(Map<String, Object> beginResult:results) {
			String quarter = String.valueOf(beginResult.get("QUARTER"));
			set.add(quarter);
		}
		
		String quarters[] = new String[] {"1","2","3","4"};
		for(String quarter:quarters) {
			if(!set.contains(quarter)) {
				Map<String, Object> zeroQuarterMap = new HashMap<String, Object>();
				zeroQuarterMap.put("QUARTER", quarter);
				results.add(zeroQuarterMap);
			}
		}
		//填充quarter外其他记录,以返回记录数据最多一列作为基础
		Set<String> keys = new HashSet<String>();
		for(Map<String, Object> result:results) {
			keys.addAll(result.keySet());
		}
		for(Map<String, Object> result:results) {  //填充无数据记录为0
			Set<String> resultKeys = result.keySet();
			for(String key:keys) {
				if(!resultKeys.contains(key)) {
					result.put(key, 0);
				}
			}
		}
		
		//排序
		results=results.stream().sorted((map1,map2)->{
				return map1.get("QUARTER").toString().compareTo(map2.get("QUARTER").toString());
		}).collect(Collectors.toList());
		
		return results;
	}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值