因业务需求,在同一张表格中,将地区、全国业务数据 按年份分组统计,将相同年份的数据组装成一条数据在表格中对比显示。效果图如下:
当前地区 | 全国 | ||||
年度 | 季度 | 成交额 | 净利润 | 成交额 | 净利润 |
2019 | 1季度 |
|
|
|
|
2018 | 4季度 |
|
|
|
|
因为要求按年度倒序,我利用TreeMap做了排序处理:
//封装结果为 Map<year-finTypeCde, map<String, String>> 格式
Map<String, Map<String, String>> resultMap = new TreeMap<>(new Comparator<String>(){
@Override
public int compare(String o1, String o2){
return o2.compareTo(o1);
} //按时间倒序
});
最后将集合返回。
前端ajax取到的数据:接下格式如下:
前端ajax取到数据后,遍历代码:
实际展示效果始终是按年份正序。
后来,在后台将map集合遍历封装到了list集合,问题解决。
回想了下排序无效的原因:
首先,无论后台是那种集合,前端js取到的都是json数据。而json要么是对象,要么就是对象数组。
然后,Map返回到前端是一个json对象,对象是按属性取值的,key就相当于对象的属性,有什么可以为属性排序吗??
而list返回到前端是json对象数组,数组是按下标有序的。下图list集合返回的格式:
所以,前端需要排序的话,后端必须返回json数组。