昨天寫《mysql進行查詢時可以用limit限制查詢結果的條數,Java可以嗎?》和大家約定好了,今天要寫一寫怎麼對流做類似order by的操作。
既然說到,那就要做到。
今天就來寫一寫Java8中怎麼對流做類似sql中order by的操作。
俗話說:「一事不煩二主」,還是寫流相關的內容,那就還麻煩之前的類和數據登場演繹一番了。
前面對流做類似sql查詢的group by功能用的是groupingBy方法,對流做類似sql查詢limit功能用的是limit方法。那這裡要對流做類似sql查詢的order by操作是否也有類似叫orderBy之類的方法呢。
這裡就沒有類似orderBy這樣的方法了,而是如上圖的sorted方法。
我們先來試試沒有參數的。
執行一下,看看會有什麼效果。
拋出了無法轉型的異常,Student無法轉型為Comparable。為什麼會這樣呢,因為這裡使用無參的sorted方法就需要要排序的對象本身是可排序的,也就是實現了Comparable接口的。
那我們將Student類實現一下Comparable接口。
再來執行一下剛才的sorted功能試試吧。
可以了,實現了按照age進行排序的目的。
下面再來看看有參數的sorted是如何使用的。
其實就是將比較的邏輯寫在了sorted方法中。
這次我把比較的順序改了一下,剛才是升序,相當於sql的的asc,這次是降序,相當於sql中的desc。
執行一下,看看效果吧。
昨天的文章寫對流做limit操作時有說到,sql中一般做limit操作時都是先要做order by。
那再來看看對流怎麼做類似order by的操作之後進行limit操作吧。
如上圖代碼所示,其實就是對前面的代碼中sorted之後調用一下limit方法就行了。
看看執行結果吧。
目的達到了。