查询数据库得到数据,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"},
- .....
- ]