Java根据年度将数据分组
现在有这么一组数据
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后台根据年度分组的详细过程,可能还有别的更好地办法,欢迎一起讨论
Java根据年度将数据分组的更多相关文章
- ElasticSearch6.0 Java API 使用 排序,分组 ,创建索引,添加索引数据,打分等(一)
ElasticSearch6.0 Java API 使用 排序,分组 ,创建索引,添加索引数据,打分等 如果此文章对你有帮助,请关注一下哦 1.1 搭建maven 工程 创建web工程 ...
- java按某个字段对数据分组
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; i ...
- .NET LINQ 数据分组
数据分组 分组指将数据放入组中以便每个组中的元素共享公共特性的操作. 方法 方法名 说明 C# 查询表达式语法 Visual Basic 查询表达式语法 更多信息 GroupBy 对共享 ...
- Java在处理大数据的时候一些小技巧
Java在处理大数据的时候一些小技巧 发布时间:2013-05-09 00:00:00 来源:中国IT实验室 作者:佚名 关键字:Java 众所周知,java在处理数据量比较大的时候,加载到内存必 ...
- MySQL:基础—数据分组
MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...
- Android java传递string类型数据给C
本文接着实现<Android java传递int类型数据给C>的还未实现的方法: public native String sayHelloInC(String s); 先贴一个工具方法, ...
- Android java传递int类型数据给C
本文根据<Android jni简便开发流程>中的开发流程来实现一个java传递int类型数据给C 新建项目,进行简单的布局 <LinearLayout xmlns:android= ...
- Java学习-022-Properties 文件数据写入
Properties 配置文件写入主要通过 Properties.setProperty 和 Properties.store 两个方法,此文以一个简单的 properties 文件写入源码做示例. ...
- EMVTag系列1《数据分组》
数据分组的设计在个人化过程中承担着重要的作用.数据分组标识符(DGI)是两字节十六进制数.数据分组标识的第一个字节等于'01'到'1E',表明数据存储的SFI.第二个字节表明SFI记录的记录编号.其他 ...
随机推荐
- eclipse 中为 java 项目生成 API 文档、JavaDoc
当我们的项目很大,编写了很多代码的时候,就需要生成一个标准的 API 文档,让后续的开发人员,或者合作者可以清晰的了解您方法的使用. 1.点击 eclipse 的 Project 菜单,选择 Gene ...
- 如何使用微信小程序video组件播放视频
相信很多人都有在手机上看视频的习惯,比较看视频更真实更形象.那么我们在微信小程序中如何观看视频呢?这就需要video组件的帮忙了.今天我们就给大家演示一下,如何用微信小程序组件video播放视频.我们 ...
- angular中多个promise的合并处理
all()方法 这个all()方法,可以把多个primise的数组合并成一个.当所有的promise执行成功后,会执行后面的回调.回调中的参数,是每个promise执行的结果.当批量的执行某些方法时, ...
- 【Codeforces 372A】Counting Kangaroos is Fun
[链接] 我是链接,点我呀:) [题意] 如果a[i]*2<=a[j]那么i袋鼠可以装进j袋鼠里面 每只袋鼠都只能装一只袋鼠 [题解] 假设最后的方案是(ai,bi) 这里(ai,bi)表示下标 ...
- [luoguP3146] [USACO16OPEN]248(区间DP)
传送门 f[i][j]表示区间 i-j 合并的最大值 转移: 若f[i][k] && f[k+1][j] && f[i][k] == f[k+1][j] --> ...
- Wow! Such Sequence! (线段树) hdu4893
http://acm.hdu.edu.cn/showproblem.php?pid=4893 先贴上一份还没过的代码,不知道拿出错了 1 // by caonima ; ; ],col[MAX< ...
- POJ 3630
Phone List Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20894 Accepted: 6532 Descripti ...
- (三)用openCV在图片上绘画标记
1.在图片上画图(直线,矩形,圆形,多边形) import numpy as np import cv2 img = cv2.imread('watch.jpg',cv2.IMREAD_COLOR) ...
- 【触发器】MySQL触发器使用详解
MySQL包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行. 创建触发器在MySQL中,创建触发器语法如下: ...
- Crashing Robots POJ 2632 简单模拟
Description In a modernized warehouse, robots are used to fetch the goods. Careful planning is neede ...