Java中Stream流对多个字段进行排序的方法

 更新时间:2023年10月20日 10:10:17   作者:哥的冷酷,你模仿不来  
我们在处理数据的时候经常会需要进行排序后再返回给前端调用,比如按照时间升序排序,前端展示数据就是按时间先后进行排序,下面这篇文章主要给大家介绍了关于Java中Stream流对多个字段进行排序的相关资料,需要的朋友可以参考下

前言

谈起Java 8,不少熟悉它的人,都会知道有一个对我们帮助很大的新特性,没错,就是我们在项目中经常用到的stream,它对我们处理数据的过程中提供了很多的便利,而这边文章主要讲述stream的便利之一:对多个字段进行排序

1、首先我们在数据库中插入几条样例数据

要求:按照nick_name、address、age顺序进行排序

2、我们先用sql查询的方式对数据进行排序

3、通过stream流的方式进行排序

代码实现:

  public Object selectList() {
        List<User> userList = userMapper.selectList(new QueryWrapper<>());
        Comparator<User>comparator =Comparator.comparing(User::getNickName)
                .thenComparing(User::getAddress)
                .thenComparing(User::getAge);
        userList = userList.stream().sorted(comparator).collect(Collectors.toList());
        return userList;
    }

结果展示:

[
    {
        "id": 2,
        "userName": "zhangsan",
        "nickName": "张三",
        "password": "123456",
        "address": "武汉",
        "phone": "18178523659",
        "sex": 1,
        "age": 42,
        "createTime": "2023-07-15 13:30:52"
    },
    {
        "id": 3,
        "userName": "zhangsan102",
        "nickName": "张三",
        "password": "123456",
        "address": "武汉",
        "phone": "15236985214",
        "sex": 1,
        "age": 57,
        "createTime": "2023-07-15 13:31:27"
    },
    {
        "id": 4,
        "userName": "zhangshan103",
        "nickName": "张三",
        "password": "123456",
        "address": "西安",
        "phone": "18956235841",
        "sex": 1,
        "age": 36,
        "createTime": "2023-07-15 13:32:28"
    },
    {
        "id": 1,
        "userName": "admin",
        "nickName": "超级管理员",
        "password": "123456",
        "address": "武汉",
        "phone": "15172378154",
        "sex": 1,
        "age": 30,
        "createTime": "2023-05-08 11:45:31"
    }
]

通过代码我们可以知道通过stream的sorted()方法就可实现我们想要的结果,原理还是利用Comparator比较器对要排序的字段进行比较,如果想倒序,则在比较器后面加上reversed(),该方法是对排序后的数据进行一个反转。

小结:虽然对多个字段进行排序有时候通过sql语句就能实现,但有时候一些特殊场景导致不能使用sql排序的时候,stream就能派上用场了

总结

到此这篇关于Java中Stream流对多个字段进行排序的文章就介绍到这了,更多相关Java Stream流多字段排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java 图片验证码的实现代码

    java 图片验证码的实现代码

    java 图片验证码的实现代码,需要的朋友可以参考一下
    2013-05-05
  • SpringBoot解决Required String parameter xxx is not present问题

    SpringBoot解决Required String parameter xxx is not prese

    这篇文章主要介绍了SpringBoot解决Required String parameter xxx is not present问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java集成Redis构建企业级的高可用分布式缓存系统

    Java集成Redis构建企业级的高可用分布式缓存系统

    在当今的互联网应用中,随着用户量和数据量的快速增长,系统性能和可用性面临着巨大挑战,本文将深入探讨如何在Java应用中集成Redis,构建企业级的分布式缓存解决方案,有需要的小伙伴可以了解下
    2025-09-09
  • Java如何实现长连接

    Java如何实现长连接

    这篇文章主要介绍了Java如何实现长连接,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-09-09
  • jmeter添加自定义扩展函数之图片base64编码示例详解

    jmeter添加自定义扩展函数之图片base64编码示例详解

    这篇文章主要介绍了jmeter添加自定义扩展函数之图片base64编码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • 分析Java中为什么String不可变

    分析Java中为什么String不可变

    Java中为什么String是不可变性的。今天我们从多角度解析为什么Java把String做成不可变的。
    2021-06-06
  • 使用maven编译Java项目实例

    使用maven编译Java项目实例

    这篇文章主要介绍了使用maven编译Java项目实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • Java使用dom4j解析XML

    Java使用dom4j解析XML

    dom4j是一个开源的、基于Java的XML解析库,而在Java中使用dom4j库解析XML是一种常见的方法,下面就跟随小编一起来学习一下Java如何使用dom4j解析XML吧
    2024-12-12
  • java 实现最小二叉树堆排序的实例

    java 实现最小二叉树堆排序的实例

    这篇文章主要介绍了java 实现最小二叉树堆排序的实例的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • Java实现布隆过滤器的几种方式总结

    Java实现布隆过滤器的几种方式总结

    这篇文章给大家总结了几种Java实现布隆过滤器的方式,手动硬编码实现,引入Guava实现,引入hutool实现,通过redis实现等几种方式,文中有详细的代码和图解,需要的朋友可以参考下
    2023-07-07

最新评论