文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java Stream流对多个字段进行排序

2023-09-03 21:44

关注

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

  1. 首先我们在数据库中插入几条样例数据
    要求:按照nick_name、address、age顺序进行排序

在这里插入图片描述

  1. 我们先用sql查询的方式对数据进行排序
    在这里插入图片描述

通过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就能派上用场了

来源地址:https://blog.csdn.net/qq_42570879/article/details/131738318

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯