"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;
}