现在有这么一组数据

code                   name                year

45615654           x1                     2018-2019

78912648           x2                     2018-2019

42364322           x3                     2017-2018

87635225           x4                     2016-2017

我想在Java后台将数据按year分组该怎么做呢

首先数据一定是根据year排序好的

最后返到前台的数据格式是这样的

原理就是year每换一次map就往里put一组year和list

chargeList: [
          {
            year: 2018-2019,
            list: [
              {
                code: 45615654,
                name: "x1"
              },
              {
                code: 78912648,
                name: "x2"
              },
            ]
          }
        ]

第一种实现:

想要获得这样的数据需要最外层循环根据不重复year的个数来循环

内层再根据year来判断将什么数据放到list中

最后将year和list装在dataMap里

List<ClientResult> clientMsts = clientMstMapper.selectHeatingData2();
List<Map> dataList = new ArrayList<>();
        String year = "";
        List<String> yearList = new ArrayList<>();
        for (ClientResult c : clientMsts) {
            if (!year.equals(c.getYear())) {
                year = c.getYear();
                yearList.add(year);
            }
        }
        for (int i = 0; i < yearList.size(); i++) {
            Map<String, Object> map = new HashMap<>();//装的是code和name
            Map<String, Object> dataMap = new HashMap<>();//装year和list
            List<Map> list = new ArrayList<>();
            year = yearList.get(i);
            for (ClientResult c : clientMsts) {
                if (year.equals(c.getYear())) {
                    map.put("code", c.getCode());
                    map.put("name", c.getName());
                    list.add(map);
                }
            }
            dataMap.put("year", year);
            dataMap.put("list", list);
            dataList.add(dataMap);
        }
        Map<String, Object> map = new HashMap<>();
        map.put("dataList", dataList);

第二种实现:

当year不相同的时候往dataMap中put一组数据

List<ClientResult> clientMsts = clientMstMapper.selectHeatingData2();
        List<Map> dataList = new ArrayList<>();
        String year = "";
        List<Map> lists = null;
        for (ClientResult c : clientMsts) {
            Map<String, Object> dataMap= new HashMap<>();
            boolean a = false;
            if (!year.equals(c.getClientPaymentYear())) {
                year = c.getClientPaymentYear();
                dataMap.put("year", year);
                lists = new ArrayList<>();
                a = true;
            }
            Map map = new HashMap();
            map.put("code", c.getClientMstCode());
            map.put("name", c.getHousingEstateName());
            lists.add(map2);
            if (a) {
                dataMap.put("data", lists);
                dataList.add(map);
            }
        }
        Map<String, Object> map = new HashMap<>();
        map.put("dataList", dataList);

这就是Java后台根据年度分组的详细过程,可能还有别的更好地办法,欢迎一起讨论

最新文章

  1. 五、HTML判断输入长度,体会字体颜色变化
  2. HTTP长连接和短连接原理浅析
  3. 在此页上的ActiveX控件和本页上的其他部分的交互可能不安全,你想允许这种交互吗
  4. 导出websphere内存镜像
  5. HDU3333 Turing Tree 离线树状数组
  6. 解决asp.net mvc中*.resx资源文件访问报错
  7. MVC基本学习
  8. 所有的GUI Toolkit,类型之多真开眼界
  9. javascript 中 undefined 和 null 区别
  10. JS操作cookie的实例
  11. 时间序列 预测分析 R语言
  12. Android GreenDAO3.0——介绍
  13. 【集美大学1411_助教博客】个人作业3——个人总结(Alpha阶段) 成绩
  14. EOCS框架概述和剖析
  15. DbHelperSQL 增加事务处理方法(2种)
  16. 如何找出当前活动桌面背景图像的位置/路径(Ubuntu 18.04,GNOME)?
  17. 《Linux服务器的监控》
  18. python nt, bool, str 试题
  19. 【POJ2631】Roads in the North 树的直径
  20. Java反射机制的使用(全)

热门文章

  1. 洛谷 1894 [USACO4.2]完美的牛栏The Perfect Stall
  2. [bzoj4300][绝世好题] (动规)
  3. 主流图数据库Neo4J、ArangoDB、OrientDB综合对比:架构分析
  4. 在Myeclipse中拷贝一个web项目,但是tomcat文件夹中没有更新,需要进行修改才能更新。
  5. 【触发器】MySQL触发器使用详解
  6. spark之scala快速入门
  7. Ubuntu 16.04安装Grub Customizer替代Startup-manager(解决找不到menu.lst,GRUB配置简单介绍)
  8. SQLalchemy 查询总结
  9. mysql limit具体用法
  10. Manthan, Codefest 16 C