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流多字段排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何通过XML方式配置并实现Mybatis

    如何通过XML方式配置并实现Mybatis

    这篇文章主要介绍了如何通过XML方式配置并实现Mybatis,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Java awt-对话框简单实现方式

    Java awt-对话框简单实现方式

    这篇文章主要介绍了Java awt-对话框简单实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 关于SpringBoot拦截器拦截静态资源的问题

    关于SpringBoot拦截器拦截静态资源的问题

    这篇文章主要介绍了关于SpringBoot拦截器拦截静态资源的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java中重写和重载的区别及说明

    Java中重写和重载的区别及说明

    Java语言中的重载和重写是实现多态的两种方式,但他们的实现方式和规则有所不同,重载发生在一个类中,同名的方法如果有不同的参数列表,则视为重载,重写则发生在子类和父类之间,要求子类重写方法和父类被重写方法有相同的返回类型
    2024-10-10
  • java中Arthas的作用和使用方式

    java中Arthas的作用和使用方式

    Arthas 是由阿里巴巴开源的 Java 诊断工具,主要用于在生产环境中诊断和解决 Java 应用问题,它提供实时监控、类信息查看、动态追踪、条件表达式断点等功能,支持非侵入式设计和高扩展性,通过 Arthas,开发者可以在不停止应用的情况下,快速定位和解决问题
    2025-01-01
  • Java前后端的JSON传输方式(前后端JSON格式转换)

    Java前后端的JSON传输方式(前后端JSON格式转换)

    这篇文章主要介绍了Java前后端的JSON传输方式(前后端JSON格式转换),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 详解Redis 缓存 + Spring 的集成示例

    详解Redis 缓存 + Spring 的集成示例

    本篇文章主要介绍了Redis 缓存 + Spring 的集成示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • spring 集成 mybatis的实例详解

    spring 集成 mybatis的实例详解

    这篇文章主要介绍了spring 集成 mybatis的实例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • JAVA的Random类的用法详解

    JAVA的Random类的用法详解

    Random类主要用来生成随机数,本文详解介绍了Random类的用法,希望能帮到大家。
    2016-04-04
  • Spring 控制反转和依赖注入的具体使用

    Spring 控制反转和依赖注入的具体使用

    本文主要介绍了Spring 控制反转和依赖注入,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02

最新评论