首页 > 编程语言 >JAVA List<Map<String, Object>> sort 多个排序写法

JAVA List<Map<String, Object>> sort 多个排序写法

时间:2024-09-02 18:16:04浏览次数:12  
标签:sort JAVA name tax price List list put

 

基本方法

    /**
     * 排序=
     *
     * @param list
     * @param sort_key
     * @return
     */
    public static List<Map<String, Object>> sort(List<Map<String, Object>> list, String sort_key,Boolean asc, String sort_key2,Boolean asc2) {


        Collections.sort(list, (map1, map2) -> {
            Double totalprice1 = map1 == null ? 0.0 : Double.parseDouble(map1.get(sort_key).toString());
            Double totalprice2 = map2 == null ? 0.0 : Double.parseDouble(map2.get(sort_key).toString());
            int i =0;
            i=asc?totalprice1.compareTo(totalprice2):totalprice2.compareTo(totalprice1);
            if (i != 0)
                return i;
            Double d1 = Double.parseDouble(map1.get(sort_key2).toString());
            Double d2 = Double.parseDouble(map2.get(sort_key2).toString());
            return asc2?d1.compareTo(d2):d2.compareTo(d1);

        });
        return list;
    }

 

写个demo测试一下

 static void testSort() {
        List<Map<String, Object>> list = new ArrayList<>();
        Map<String, Object> item0 = new HashMap<>();
        item0.put("price", 50);
        item0.put("tax", 3);
        item0.put("name", "item0");

        Map<String, Object> item1 = new HashMap<>();
        item1.put("price", 100.0);
        item1.put("tax", 1);
        item1.put("name", "item1");
        Map<String, Object> item2 = new HashMap<>();
        item2.put("price", 50.0);
        item2.put("tax", 1);
        item2.put("name", "item2");

        Map<String, Object> item3 = new HashMap<>();
        item3.put("price", 150.0);
        item3.put("tax", 3);
        item3.put("name", "item3");

        list.add(item0);
        list.add(item1);
        list.add(item2);
        list.add(item3);
        List<Map<String, Object>> result = sort(list,  "tax",true,"price",true);

        System.out.println(result);

        List<Map<String, Object>> result2 = sort(list,  "price",true,"tax",true);
        System.out.println(result2);
    }

 

打印结果

[{price=50.0, name=item2, tax=1}, {price=100.0, name=item1, tax=1}, {price=50, name=item0, tax=3}, {price=150.0, name=item3, tax=3}]
[{price=50.0, name=item2, tax=1}, {price=50, name=item0, tax=3}, {price=100.0, name=item1, tax=1}, {price=150.0, name=item3, tax=3}]

 

结果符合

 

又多了一项无用的技能

 

标签:sort,JAVA,name,tax,price,List,list,put
From: https://www.cnblogs.com/cvol/p/18393228

相关文章

  • Java平衡树--查找树的新建与树的实现
    Java学习+面试指南:https://javaxiaobear.cn1、查找树的定义一棵2-3查找树要么为空,要么满足满足下面两个要求:2-结点含有一个键(及其对应的值)和两条链,左链接指向2-3树中的键都小于该结点,右链接指向的2-3树中的键都大于该结点。3-结点含有两个键(及其对应的值)和三条链,左链接指向的2......
  • Java 最小优先队列API设计与实现
    Java学习+面试指南:https://javaxiaobear.cn最小的元素放在数组的索引1处。每个结点的数据总是小于等于它的两个子结点的数据。1、API设计类名MinPriorityQueue构造方法MinPriorityQueue(intcapacity):创建容量为capacity的MinPriorityQueue对象成员方法privatebooleanless(inti......
  • Java 堆的设计,如何用堆进行排序
    Java学习+面试指南:https://javaxiaobear.cn1、堆的定义堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵完全二叉树的数组对象。1、堆的特性它是完全二叉树,除了树的最后一层结点不需要是满的,其它的每一层从左到右都是满的,如果最后一层结点不是满的,那么要求左满右......
  • Java最大优先队列设计与实现
    Java学习+面试指南:https://javaxiaobear.cn1、API设计类名MaxPriorityQueue构造方法MaxPriorityQueue(intcapacity):创建容量为capacity的MaxPriorityQueue对象成员方法privatebooleanless(inti,intj):判断堆中索引i处的元素是否小于索引j处的元素privatevoideach(inti,int......
  • Java索引优先队列设计思路与实现
    Java学习+面试指南:https://javaxiaobear.cn1、实现思路存储数据时,给每一个数据元素关联一个整数,例如insert(intk,Tt),我们可以看做k是t关联的整数,那么我们的实现需要通过k这个值,快速获取到队列中t这个元素,此时有个k这个值需要具有唯一性。最直观的想法就是我们可以用一个T[]ite......
  • Java二叉树的遍历以及最大深度问题
    Java学习+面试指南:https://javaxiaobear.cn1、树的相关概念1、树的基本定义树是我们计算机中非常重要的一种数据结构,同时使用树这种数据结构,可以描述现实生活中的很多事物,例如家谱、单位的组织架构、等等。树是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为......
  • 运行开发模板报错lombok java 无法将类 XX类中的构造器 X应用到给定类型|java: 找不到
    一.运行环境IntelliJIDEA2024.1.4  IDEA旗舰版二.解决方法1.更改lombok版本→1.8.30<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope......
  • Java 根据模板生成 PDF 文件 以及 excel 文件
    模板PDF的字段引入maven<!--iTextforgeneratingPDFfiles--><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.2</v......
  • java定义通用返回结果类ResultVO使用示例详解
    java定义通用返回结果类ResultVO使用示例详解定义通用返回结果类定义ResultVO类,作返回给前端的对象结构,主要有4个字段code:错误码data:内容message:消息description:具体描述importlombok.Data;importjava.io.Serializable;/***通用返回结果类*@param<T>*/@D......
  • 河北成人高等教育在线刷课脚本-JavaScript编写
    脚本学习网站:河北成人高等教育在线:http://www.hbcjpt.com/portal/脚本地址:河北成人高等教育在线刷课脚本-刷课脚本教程1.插件安装(以MicrosoftEdge浏览器为例)打开最中间那个蓝色绿色的浏览器,谷歌之类的浏览器也可以点击屏幕右上角三个点,图示位置,然后点击扩展点击获取......