【Stream流】Sort排序详解「建议收藏」

【Stream流】Sort排序详解「建议收藏」很多时候由于需求的复杂性,很多直接从数据库查出的数据并不能直接返回前端,需要进行处理,处理之后又需要排序,这时候一般都会使用Stream流的Sort排序场景一:普通排序正序(升序)list=list.stream().sorted().collect(Collectors.toList());或者list.stream().sorted(Comparator.comparing(Student::getAge))倒序(降序)list.stream().sorted(Comparator.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

很多时候由于需求的复杂性,很多直接从数据库查出的数据并不能直接返回前端,需要进行处理,处理之后又需要排序,这时候一般都会使用Stream流的Sort排序

场景一:普通排序

正序(升序)

list=list.stream().sorted().collect(Collectors.toList());

或者

list.stream().sorted(Comparator.comparing(Student::getAge)) 

倒序(降序)

list.stream().sorted(Comparator.reverseOrder())

或者

list.stream().sorted(Comparator.comparing(Student::getAge).reversed())

场景二:含空值排序

有时候数据库会有一些错误数据,但是又要求程序不能报错,这怎么办呢?

1.含空值的正序(升序)排序(按创建时间排序)

list=list.stream().sorted(Comparator.comparing(l -> l.getCreateTime(), Comparator.nullsFirst(Date::compareTo))).collect(Collectors.toList());

如果创建时间可能为空就会报错

2.含空值的倒序(降序)排序

nullsFirst:空值放第一位

list=list.stream().sorted(Comparator.comparing(l -> l.getCreateTime(), Comparator.nullsFirst(Date::compareTo).reversed())).collect(Collectors.toList());

nullsLast:空值放最后

list=list.stream().sorted(Comparator.comparing(l -> l.getCreateTime(), Comparator.nullsLast(Date::compareTo).reversed())).collect(Collectors.toList());

场景三:不用Stream

// 正序
list.sort(Comparator.comparing(Integer::intValue));
 // 倒序
list.sort(Comparator.comparing(Integer::intValue).reversed());
 // 正序
list.sort(Comparator.comparing(Student::getAge));
  // 倒序
list.sort(Comparator.comparing(Student::getAge).reversed());
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169877.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关系数据库的范式理论_数据库规范化理论依据

    关系数据库的范式理论_数据库规范化理论依据文章目录求关系模式最高达到第几范式的步骤通俗理解1NF,2NF,3NF.如何求关系模式的候选码如何求闭包函数依赖求关系模式最高达到第几范式的步骤根据给定的U和F,首先求它的候选码根据候选码判断关系F中的函数关系是否满足第二范式,若不满足则为关系模式的规范化最高为第一范式然后判断是否存在非主属性传递依赖,如果存在则不满足第二范式,如果不存在则关系模式的规范化最高为第三范式.通俗理解1N…

    2022年10月16日
  • Tomcat学习—Tomcat的server.xml配置文件

    今天开始学习Tomcat的配置文件,自己学习和上网查看整理server.xml 的笔记!

    2022年2月24日
  • 解决Please make sure you have the correct access rights and the repository exists 问题.

    解决Please make sure you have the correct access rights and the repository exists 问题.问题:Pleasemakesureyouhavethecorrectaccessrightsandtherepositoryexists请确保您具有正确的访问权限并且存储库存在原因:公钥出问题了,需要删除.ssh下文件,然后重设置用户名和邮箱再重新生成ssh公钥即可解决解决:步骤一:删除.ssh下所有所有文件步骤二:1.设置用户名gitconfig–globaluser.name‘zhandehu…

    2022年7月27日
  • C# 多线程编程

    C# 多线程编程1.如果只是启动一个新线程,不需要传入参数,不需要线程返回结果,可以直接使用ThreadStart(),Thread类接收一个ThreadStart委托或ParameterizedThreadSta

    2022年7月2日
  • db2 分区数据库详解

    db2 分区数据库详解本文主要介绍什么是DB2数据库分区,为什么采用数据库分区,并以BalancedWarehouseE7100为例介绍数据库分区管理的基本方法及应用实践。DB2数据库分区是DB2企业版DPF(DataPartitioningFeature)选件提供的,它主要用来为大规模数据处理、高并发数据访问提供支持。DB2数据库分区采用Share-nothing体系结构

    2022年5月3日
  • Prophet快速安装方法

    Prophet快速安装方法安装VC++14,编译器https://download.csdn.net/download/amoscn/10399046安装Fbprophetcondainstallpystancondainstall-cconda-forgefbprophet安装绘图接口condainstallplotly

    2022年6月29日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号