java 实现order by_Java8中如何对流做类似sql的order by操作

本文介绍了如何在 Java8 中使用流进行类似于 SQL `order by` 的操作。通过 `sorted()` 方法实现排序,当对象本身不实现 `Comparable` 接口时,会抛出异常。通过实现 `Comparable` 或提供自定义比较器,可以实现升序和降序排序。此外,结合 `limit()` 方法,可以在排序后进行限制返回结果的数量,模拟 SQL 中的 `order by` 加 `limit` 功能。
摘要由CSDN通过智能技术生成

昨天写《mysql进行查询时可以用limit限制查询结果的条数,Java可以吗?》和大家约定好了,今天要写一写怎么对流做类似order by的操作。

f6ece9eca8e8f1dee85e2d3047819c37.png

既然说到,那就要做到。

今天就来写一写Java8中怎么对流做类似sql中order by的操作。

俗话说:“一事不烦二主”,还是写流相关的内容,那就还麻烦之前的类和数据登场演绎一番了。

b62dad1fc80fbe56ed3984d1d25b776a.png

前面对流做类似sql查询的group by功能用的是groupingBy方法,对流做类似sql查询limit功能用的是limit方法。那这里要对流做类似sql查询的order by操作是否也有类似叫orderBy之类的方法呢。

88b288aa9e46bc3cc4f20685798f1c5d.png

这里就没有类似orderBy这样的方法了,而是如上图的sorted方法。

我们先来试试没有参数的。

9cb8b7fbc0868729b7e429cdac6befb7.png

执行一下,看看会有什么效果。

f437eeab03aae45bfeff7b328581ee1e.png

抛出了无法转型的异常,Student无法转型为Comparable。为什么会这样呢,因为这里使用无参的sorted方法就需要要排序的对象本身是可排序的,也就是实现了Comparable接口的。

那我们将Student类实现一下Comparable接口。

9b8c07137f745730ed07e52ef723f869.png

再来执行一下刚才的sorted功能试试吧。

e0923321183f378d740e7686b623ab29.png

可以了,实现了按照age进行排序的目的。

下面再来看看有参数的sorted是如何使用的。

52fac7cd547084788f8d753dd7d119f0.png

其实就是将比较的逻辑写在了sorted方法中。

这次我把比较的顺序改了一下,刚才是升序,相当于sql的的asc,这次是降序,相当于sql中的desc。

执行一下,看看效果吧。

c5f11c3380158bb42878f968568d5c25.png

昨天的文章写对流做limit操作时有说到,sql中一般做limit操作时都是先要做order by。

那再来看看对流怎么做类似order by的操作之后进行limit操作吧。

3c702535499bb55ab663d1d404fa4a3f.png

如上图代码所示,其实就是对前面的代码中sorted之后调用一下limit方法就行了。

看看执行结果吧。

f5f11deb54a0853c84fd41fbf022c121.png

目的达到了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值