java 数据分组_Java根据年度将数据分组

这篇博客介绍了如何在Java后台将数据按照year字段进行分组,提供两种不同的实现方式,最后返回到前台的数据格式为包含year和对应数据列表的对象集合。博主分享了具体的代码实现,并邀请读者讨论更多高效的方法。
摘要由CSDN通过智能技术生成

现在有这么一组数据

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

e18bbc5b786cb922cfe460ec262193f3.png

chargeList: [

{

year: 2018-2019,

list: [

{

code: 45615654,

name: "x1"

},

{

code: 78912648,

name: "x2"

},

]

}

]

第一种实现

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

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

最后将year和list装在dataMap里

List clientMsts = clientMstMapper.selectHeatingData2();

List dataList = new ArrayList<>();

String year = "";

List 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 map = new HashMap<>();//装的是code和name

Map dataMap = new HashMap<>();//装year和list

List 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 map = new HashMap<>();

map.put("dataList", dataList);

第二种实现

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

List clientMsts = clientMstMapper.selectHeatingData2();

List dataList = new ArrayList<>();

String year = "";

List lists = null;

for (ClientResult c : clientMsts) {

Map 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(map);

if (a) {

dataMap.put("data", lists);

dataList.add(map);

}

}

Map map = new HashMap<>();

map.put("dataList", dataList);

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值