对List< Map >数据排序

  • 原始数据
  • 排序规则
  • MapCompare类
  • 具体代码
  • 多重条件排序时
  • 排序后结果

原始数据

{"msg":"成功","code":0,"obj":[{"importance":3,"childList":[{"importance":3,"kpId":2091,"kpName":"增值税应纳税额的计算-一般计税方法应纳税额的计算","attrStatus":2,"kpScore":1.00,"isExamPoint":1,"baseKpId":2139,"isMust":1},{"importance":3,"kpId":2093,"kpName":"增值税应纳税额的计算-简易计税方法应纳税额的计算","attrStatus":2,"kpScore":1.00,"isExamPoint":1,"baseKpId":2141,"isMust":1},{"importance":3,"kpId":2095,"kpName":"增值税应纳税额的计算-进口货物应纳税额的计算","attrStatus":2,"kpScore":0.67,"isExamPoint":1,"baseKpId":2143,"isMust":1}],"kpName":"增值税应纳税额的计算","kpId":2089,"attrStatus":2,"kpScore":0.00,"isExamPoint":1,"baseKpId":2137,"isMust":1},{"importance":3,"childList":[{"importance":3,"kpId":2063,"kpName":"增值税征税范围-销售货物","attrStatus":2,"kpScore":0.20,"isExamPoint":1,"baseKpId":2111,"isMust":1},{"importance":3,"kpId":2065,"kpName":"增值税征税范围-销售劳务","attrStatus":2,"kpScore":0.20,"isExamPoint":1,"baseKpId":2113,"isMust":1},{"importance":3,"kpId":2067,"kpName":"增值税征税范围-销售服务","attrStatus":2,"kpScore":0.20,"isExamPoint":1,"baseKpId":2115,"isMust":1},{"importance":3,"kpId":2069,"kpName":"增值税征税范围-销售无形资产","attrStatus":2,"kpScore":0.20,"isExamPoint":1,"baseKpId":2117,"isMust":1},{"importance":3,"kpId":2071,"kpName":"增值税征税范围-销售不动产","attrStatus":2,"kpScore":0.20,"isExamPoint":1,"baseKpId":2119,"isMust":1},{"importance":3,"kpId":2073,"kpName":"增值税征税范围-进口货物","attrStatus":2,"kpScore":0.20,"isExamPoint":1,"baseKpId":2121,"isMust":1},{"importance":3,"kpId":2075,"kpName":"增值税征税范围-非经营活动的界定","attrStatus":2,"kpScore":0.20,"isExamPoint":1,"baseKpId":2123,"isMust":1},{"importance":3,"kpId":2077,"kpName":"增值税征税范围-境内销售服务、无形资产或者不动产的界定","attrStatus":2,"kpScore":0.20,"isExamPoint":1,"baseKpId":2125,"isMust":1},{"importance":3,"kpId":2079,"kpName":"增值税征税范围-视同销售货物行为","attrStatus":2,"kpScore":0.19,"isExamPoint":1,"baseKpId":2127,"isMust":1},{"importance":3,"kpId":2081,"kpName":"增值税征税范围-混合销售","attrStatus":2,"kpScore":0.00,"isExamPoint":1,"baseKpId":2129,"isMust":1},{"importance":3,"kpId":2083,"kpName":"增值税征税范围-兼营","attrStatus":2,"kpScore":0.00,"isExamPoint":1,"baseKpId":2131,"isMust":1},{"importance":3,"kpId":2085,"kpName":"增值税征税范围-不征收增值税项目","attrStatus":2,"kpScore":0.19,"isExamPoint":1,"baseKpId":2133,"isMust":1}],"kpName":"增值税征税范围","kpId":2061,"attrStatus":2,"kpScore":0.00,"isExamPoint":1,"baseKpId":2109,"isMust":1},{"importance":3,"childList":[{"importance":3,"kpId":2113,"kpName":"消费税应纳税额的计算-销售额的确定","attrStatus":2,"kpScore":0.50,"isExamPoint":1,"baseKpId":2161,"isMust":1},{"importance":3,"kpId":2115,"kpName":"消费税应纳税额的计算-应纳税额的计算","attrStatus":2,"kpScore":0.50,"isExamPoint":1,"baseKpId":2163,"isMust":1},{"importance":3,"kpId":2117,"kpName":"消费税应纳税额的计算-已纳消费税的扣除","attrStatus":2,"kpScore":0.49,"isExamPoint":1,"baseKpId":2165,"isMust":1}],"kpName":"消费税应纳税额的计算","kpId":2111,"attrStatus":2,"kpScore":0.00,"isExamPoint":1,"baseKpId":2159,"isMust":1},{"importance":1,"childList":[],"kpName":"税收与税收法律关系","kpId":2053,"attrStatus":2,"isExamPoint":1,"baseKpId":2101,"isMust":0},{"importance":1,"childList":[],"kpName":"税法要素","kpId":2055,"attrStatus":2,"isExamPoint":1,"baseKpId":2103,"isMust":1},{"importance":1,"childList":[],"kpName":"现行税种与征收机关","kpId":2057,"attrStatus":2,"isExamPoint":1,"baseKpId":2105,"isMust":1},{"importance":2,"childList":[],"kpName":"增值税纳税人和扣缴义务人","kpId":2059,"attrStatus":2,"isExamPoint":1,"baseKpId":2107,"isMust":1},{"importance":1,"childList":[],"kpName":"增值税税率和征收率","kpId":2087,"attrStatus":2,"isExamPoint":1,"baseKpId":2135,"isMust":1},{"importance":2,"childList":[],"kpName":"增值税税收优惠","kpId":2097,"attrStatus":2,"isExamPoint":1,"baseKpId":2145,"isMust":1},{"importance":2,"childList":[],"kpName":"增值税征收管理","kpId":2099,"attrStatus":2,"isExamPoint":1,"baseKpId":2147,"isMust":1},{"importance":2,"childList":[],"kpName":"增值税专用发票使用规定","kpId":2101,"attrStatus":2,"isExamPoint":1,"baseKpId":2149,"isMust":1},{"importance":2,"childList":[],"kpName":"消费税纳税人","kpId":2103,"attrStatus":2,"isExamPoint":1,"baseKpId":2151,"isMust":1},{"importance":3,"childList":[],"kpName":"消费税征税范围","kpId":2105,"attrStatus":2,"isExamPoint":1,"baseKpId":2153,"isMust":1},{"importance":2,"childList":[],"kpName":"消费税税目","kpId":2107,"attrStatus":2,"isExamPoint":1,"baseKpId":2155,"isMust":1},{"importance":1,"childList":[],"kpName":"消费税税率","kpId":2109,"attrStatus":2,"isExamPoint":1,"baseKpId":2157,"isMust":1},{"importance":2,"childList":[],"kpName":"消费税征收管理","kpId":2119,"attrStatus":2,"isExamPoint":1,"baseKpId":2167,"isMust":1},{"importance":1,"childList":[],"kpName":"第四章小结","kpId":2121,"attrStatus":2,"isExamPoint":0,"baseKpId":2169,"isMust":0}]}

排序规则

按kpScore倒序排列

list.stream().sorted(Comparator.comparing(MapCompare::comparingByKpScore).reversed()).collect(Collectors.toList());

MapCompare类

public class MapCompare {public static BigDecimal comparingByKpScore(Map map){return (BigDecimal) map.get("kpScore");}
//、、、、、、如果需要其他字段排序可在下方补充
}

具体代码

public List<Map> getKpListByChapterIdOrder(String chapterId) {//获取原始数据List<Map> resuList = getKpListByChapterId(chapterId.toString());//对原始数据字段进行整理//返回值listList<Map> chapterKpIds = new ArrayList<>();Map resuMap;//遍历取子级知识点for (Map map : resuList) {//判断是否有子级List<Map> childList = (List<Map>) map.get("childList");if (CollectionUtils.isNotEmpty(childList)) {//有子级知识点,则取子级知识点for (Map cm : childList) {resuMap = new HashMap(8);resuMap.put("kpId",cm.get("kpId").toString());resuMap.put("kpName",cm.get("kpName"));resuMap.put("kpScore",cm.get("kpScore"));chapterKpIds.add(resuMap);}}else {//没有子级则取父级resuMap = new HashMap(8);resuMap.put("kpId",map.get("kpId").toString());resuMap.put("kpName",map.get("kpName"));resuMap.put("kpScore",map.get("kpScore"));chapterKpIds.add(resuMap);}}//按kpScore倒序排列chapterKpIds =chapterKpIds.stream().sorted(Comparator.comparing(MapCompare::comparingByKpScore).reversed()).collect(Collectors.toList());//返回数据return chapterKpIds;}

多重条件排序时

list.stream().sorted(Comparator.comparing(MapCompare::comparingByKpScore).reversed().thenComparing(Comparator.comparing(MapCompare::comparingByOther))).collect(Collectors.toList());

排序后结果

[{"kpScore":1.20,"kpName":"消费税征税范围","kpId":"2105"},{"kpScore":1.15,"kpName":"增值税专用发票使用规定","kpId":"2101"},{"kpScore":1.05,"kpName":"增值税税收优惠","kpId":"2097"},{"kpScore":1.00,"kpName":"增值税应纳税额的计算-一般计税方法应纳税额的计算","kpId":"2091"},{"kpScore":1.00,"kpName":"增值税应纳税额的计算-简易计税方法应纳税额的计算","kpId":"2093"},{"kpScore":0.67,"kpName":"增值税应纳税额的计算-进口货物应纳税额的计算","kpId":"2095"},{"kpScore":0.67,"kpName":"消费税税率","kpId":"2109"},{"kpScore":0.62,"kpName":"现行税种与征收机关","kpId":"2057"},{"kpScore":0.62,"kpName":"增值税征收管理","kpId":"2099"},{"kpScore":0.52,"kpName":"消费税税目","kpId":"2107"},{"kpScore":0.50,"kpName":"消费税应纳税额的计算-销售额的确定","kpId":"2113"},{"kpScore":0.50,"kpName":"消费税应纳税额的计算-应纳税额的计算","kpId":"2115"},{"kpScore":0.49,"kpName":"消费税应纳税额的计算-已纳消费税的扣除","kpId":"2117"},{"kpScore":0.43,"kpName":"增值税纳税人和扣缴义务人","kpId":"2059"},{"kpScore":0.43,"kpName":"消费税征收管理","kpId":"2119"},{"kpScore":0.20,"kpName":"增值税征税范围-销售货物","kpId":"2063"},{"kpScore":0.20,"kpName":"增值税征税范围-销售劳务","kpId":"2065"},{"kpScore":0.20,"kpName":"增值税征税范围-销售服务","kpId":"2067"},{"kpScore":0.20,"kpName":"增值税征税范围-销售无形资产","kpId":"2069"},{"kpScore":0.20,"kpName":"增值税征税范围-销售不动产","kpId":"2071"},{"kpScore":0.20,"kpName":"增值税征税范围-进口货物","kpId":"2073"},{"kpScore":0.20,"kpName":"增值税征税范围-非经营活动的界定","kpId":"2075"},{"kpScore":0.20,"kpName":"增值税征税范围-境内销售服务、无形资产或者不动产的界定","kpId":"2077"},{"kpScore":0.19,"kpName":"增值税征税范围-视同销售货物行为","kpId":"2079"},{"kpScore":0.19,"kpName":"增值税征税范围-不征收增值税项目","kpId":"2085"},{"kpScore":0.19,"kpName":"税收与税收法律关系","kpId":"2053"},{"kpScore":0.19,"kpName":"增值税税率和征收率","kpId":"2087"},{"kpScore":0.00,"kpName":"增值税征税范围-混合销售","kpId":"2081"},{"kpScore":0.00,"kpName":"增值税征税范围-兼营","kpId":"2083"},{"kpScore":0.00,"kpName":"税法要素","kpId":"2055"},{"kpScore":0.00,"kpName":"消费税纳税人","kpId":"2103"},{"kpScore":0.00,"kpName":"第四章小结","kpId":"2121"}]

对List<Map>数据排序相关推荐

  1. List数据转Map数据并进行分组排序

    利用JAVA 8的特性实现List数据转Map数据并进行分组排序. 1.准备数据 List<Map<String, Object>> list = new ArrayList& ...

  2. java map 值排序_使用Java8 Stream API对Map类型按照键或值进行排序

    在这篇文章中,您将学习如何使用Java对Map按照键或值进行排序.前几日有位朋友面试遇到了这个问题,看似很简单的问题,但是如果不仔细研究一下也是很容易让人懵圈的面试题.所以我决定写这样一篇文章.在Ja ...

  3. MapReduce程序之数据排序

    [toc] MapReduce程序之数据排序 需求 下面有三个文件: yeyonghao@yeyonghaodeMacBook-Pro:~/data/input/sort$ cat file1.csv ...

  4. 送你一个Python 数据排序的好方法

    摘要:学习 Pandas排序方法是开始或练习使用 Python进行基本数据分析的好方法.最常见的数据分析是使用电子表格.SQL或pandas 完成的.使用 Pandas 的一大优点是它可以处理大量数据 ...

  5. java8新特性:对map集合排序

    一.简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map,map是键值对的集合接口,它的实现类主要包括:HashMap, TreeMap, Hashtable以及LinkedHashMap等 ...

  6. 牛客国庆集训派对Day2: E. 数据排序(状压DP+记忆化搜索)

    E. 数据排序 题目描述 机器学习通常需要用到大量的人工标注好的数据进行训练.现在有这么一个数据集,有 N 个张照片,每张照片中都有一个模特.某个研究员想要训练一个机器学习算法,能够根据照片对模特的魅 ...

  7. java hashmap 无序_Map的有序和无序实现类,与Map的排序

    1.HashMap.Hashtable不是有序的: 2.TreeMap和LinkedHashMap是有序的(TreeMap默认 Key 升序,LinkedHashMap则记录了插入顺序). 今天做统计 ...

  8. C++屏蔽map自动排序

    最近写项目时,发现map自动排序了,以前没注意这个问题,可能ms考虑到map查询效率问题,插入时候就自动按key排序,查找其内部构造,发现其是模板实现方式,咱们可以改一改模板就可以避免自动排序(万不得 ...

  9. “避开”std::map自动排序

    说是 "避开",其实是利用他排序的特性: map<string, string> mymap;mymap.insert(pair<string, string&g ...

最新文章

  1. git解决“failed to push some refs to“问题
  2. linux运行apktool签名,解决Linux中使用ApkTool遇到问题
  3. LeetCode--62.不同路径(排列组合,动态规划)
  4. 在公司群匿名吐槽后当场“掉马”?QQ回应:真这样程序猿要被祭天
  5. JavaScript学习(八)—属性节点和属性值的操作
  6. 固件是通用的吗_冷镦和冷挤压是一回事吗,两者有什么区别?
  7. linux cpu bench,Linux下一种简单易行的cpu benchmark方法
  8. Postfix权威指南阅读笔记
  9. 【flask高级】结合源码解决flask经典报错:Working outside of application context
  10. Mybatis如果存在该条数据则修改,否则新增
  11. Python编程实例03——对英文文本进行分词
  12. spring-day04_JdbcTemplate声明式事务
  13. OpenCV之findContours获取轮廓(Python版)
  14. [Inside HotSpot] C1编译器HIR的构造
  15. 无法下载eclipse || 下载eclipse被墙 的解决方案
  16. 计算机DVD驱动禁用怎么恢复,win7电脑中的DVD驱动无法打开怎么办?
  17. 诸多检测、实验让你自己判断转基因大豆油是否安全无害!
  18. 大数据背后的神秘公式:贝叶斯公式
  19. Django微信支付
  20. 使用qqbot,群发好友消息以及打广告

热门文章

  1. OL3矢量图层样式自定义
  2. 趋势里的“生意经”,抖音电商服饰行业如何引爆春夏新品?
  3. 使用nginx作图片服务器的访问权限控制
  4. M70003中型Android平板电脑亦称IPED 13价格ipad的
  5. 想将PPT的文字转换到Word文档?看这一篇就够了!!!
  6. multisum 残留 there are no notifications for your products
  7. CentOS 7下安装Tomcat8.0.53并设置自动启动:
  8. 2022放假安排时间表(来自天才哥快速阅读)
  9. win7装xp(win7装xp双系统教程)
  10. 用python使用py2neo时候报“ModuleNotFoundError:No module named 'py2neo'”的错误