【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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python线程间通信的方式_android 线程间通信

    python线程间通信的方式_android 线程间通信1、python多线程#!/usr/bin/evnpython3#–*–coding:utf-8–*–#该实例反编译来说明函数执行流程importdisdefadd(a):a=a+1returnaprint(dis.dis(add))#Python中一个线程对应于C语言中的一个线程(CPython而言)(Python并不一定…

    2022年9月1日
    2
  • 单片机C语言视频教程转让「建议收藏」

    单片机C语言视频教程转让「建议收藏」单片机的C语言视频教程转让,本套光盘购于天祥电子,花了我200大元,如今我以60元(包快递)的价格转让。有意者请与我联系。QQ:247964971 电话:13982129248讲座从最基本电路知识开始讲起,非常详细的讲解KEIL编译器的使用,课程全部用单片机的C语言讲解,从C语言的第一个主函数MAIN讲起,一步步讲解每一个语法,每条指令的意思,即使对单片机一巧不能,对C语言一无所知,通过

    2022年5月24日
    37
  • 已解决是什么意思(read和read)

    今天做项目优化的时候,需要把某个页面的分为两个页面,然后就出现了这个错误这个问题不要慌,要么是打错字了,要么就是忘记传这个字段了(我算是粗心了吧,代码2000行,数据太多了),导致了在另一个页面没有找到这个value字段,因为懂问题所在,我的快速解决方法是直接ctrl+f搜.value然后在另一个页面传过来就行了…

    2022年4月14日
    29
  • VC++键盘钩子demo

    VC++键盘钩子demoHHOOKkeyHook=NULL;//先声明函数,实现在下面LRESULTCALLBACKkeyProc(intnCode,WPARAMwParam,LPARAMlParam);//初始化钩子,关闭键盘事件(除了ALT+CTRL+DELETE)voidinitHook(){ keyHook=SetWindowsHookEx(WH_KEYBOARD_LL,keyProc,GetModuleHandle(NULL),0);}//销毁钩子voidun.

    2022年6月14日
    26
  • idea2021.1的激活码 3月最新注册码

    idea2021.1的激活码 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    60
  • java设置content type_Response Content Type设置[通俗易懂]

    java设置content type_Response Content Type设置[通俗易懂]1.常见的contenttype:.aiff=audio/aiff.anv=application/x-anv.asa=text/asa.asf=video/x-ms-asf.asp=text/asp.asx=video/x-ms-asf.au=audio/basic.avi=video/avi.awf=application/vnd.adobe.workfl…

    2022年7月19日
    84

发表回复

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

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