stream流倒序排序_Stream流排序

本文详细介绍了在Java中如何使用Stream流进行数据排序,包括普通排序、处理含空值的情况以及不使用Stream的排序方法。通过示例代码展示了升序、降序排序,并提供了处理数据库可能出现的空值数据的解决方案。无论是正序还是倒序,对于含有空值的数据都能优雅地处理,确保程序的健壮性。
摘要由CSDN通过智能技术生成

很多时候由于需求的复杂性,很多直接从数据库查出的数据并不能直接返回前端,需要进行处理,处理之后又需要排序,这时候一般都会使用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).reversed())).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());

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值