橙稚 2017-05-23 08:08 采纳率: 33.3%
浏览 3238
已采纳

如何将list《map》(String ,object)转化成。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=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=首都职工体质促进中心}]
这是得到的数据,如何才能变成
series: [{
name: '通州',
data: [161.0, 166.0, 159.5, 180.0]
},
类似于这种格式,一个地区,对应一个集合。

  • 写回答

2条回答 默认 最新

  • 乔丹码得 2017-05-23 09:02
    关注

    ##这个可以用alibaba的fastjson来做,把字符串转化成类对象,然后做归总
    ##下面提供个不用fastjson的比较死的方法来做(不是很好),但也可用

    import com.alibaba.fastjson.JSON;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    
    public class Test {
       public static void  main(String arg[]){
           List<Map<String,Object>>  mapList=new ArrayList<>();
           Map<String,Object>  map1=new HashMap<>();
           map1.put("pjcj",161.1);
           map1.put("CESHIRIQI",2014);
           map1.put("SUOSHUQUYU","通州区");
           Map<String,Object>  map2=new HashMap<>();
           map2.put("pjcj",162.0);
           map2.put("CESHIRIQI",2015);
           map2.put("SUOSHUQUYU","通州区");
           Map<String,Object>  map3=new HashMap<>();
           map3.put("pjcj",151.0);
           map3.put("CESHIRIQI",2014);
           map3.put("SUOSHUQUYU","房山区");
           Map<String,Object>  map4=new HashMap<>();
           map4.put("pjcj",152.0);
           map4.put("CESHIRIQI",2014);
           map4.put("SUOSHUQUYU","房山区");
           mapList.add(map1);
           mapList.add(map2);
           mapList.add(map3);
           mapList.add(map4);
    
           Map<String,List<Double>>  areaData=new HashMap<>();
    
           for (Map<String,Object> map:mapList) {
             String areaName=(String) map.get("SUOSHUQUYU");
             double data=(double)map.get("pjcj");
             if(areaData.get(areaName)!=null){
                 List<Double> datas=areaData.get(areaName);
                 datas.add(data);
             }else{
                 List<Double> datass=new ArrayList<Double>();
                 datass.add(data);
                 areaData.put(areaName,datass);
             }
    
           }
           List<Map<String,Object>> series=new ArrayList<>();
           for (String key: areaData.keySet()) {
               Map<String,Object> map=new HashMap<>();
               map.put("name",key);
               map.put("data",areaData.get(key));
               series.add(map);
           }
    
           String  json=JSON.toJSONString(series);
           System.out.print(json);
       }
    }
    

    结果:[{"name":"房山区","data":[151,152]},{"name":"通州区","data":[161.1,162]}]

    注意依赖:

     <dependency>
                 <groupId>com.alibaba</groupId>
                 <artifactId>fastjson</artifactId>
                 <version>1.2.8</version>
             </dependency>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn