标签:map Java list put 分组 year 年度 new dataMap
现在有这么一组数据
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后台根据年度分组的详细过程,可能还有别的更好地办法,欢迎一起讨论
标签:map,Java,list,put,分组,year,年度,new,dataMap 来源: https://www.cnblogs.com/zouwangblog/p/11140957.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。