国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

JAVA像SQL一樣對List對象集合進行排序

瀏覽:5日期:2022-08-28 16:43:32

在開始之前,我先賣個關(guān)子提一個問題:假設我們有一個Movie類,這個類有三個成員變量分別是starred(是否收藏), title(電影名稱), rating(評分)。你知道怎么對一個Movie對象組成的List集合,先按照是否收藏字段倒序排序,再按照評分的倒序進行排序么?如果您不知道4行代碼以內(nèi)的解決方案(其實是1行代碼就可以實現(xiàn),但筆者格式化為4行),我覺得您有必要一步步的看下去。

在java 8 之前,實現(xiàn)對象Collection排序,集合中被排序和比較大小的對象得實現(xiàn)Comparable接口。在java 8之后,有了Comparator比較器的概念,使用Comparator完成對象數(shù)組的排序更加方便快捷,下面就給大家簡單的介紹一下java 8中使用Comparator排序的方法。

一、字符串List排序

JAVA像SQL一樣對List對象集合進行排序

cities是一個字符串數(shù)組。注意london的首字母是小寫的。 當使用sort方法,按照String.CASE_INSENSITIVE_ORDER(字母大小寫不敏感)的規(guī)則排序,結(jié)果是:[london, Milan, New Delhi, San Francisco, Tokyo] 如果使用Comparator.naturalOrder()字母自然順序排序,結(jié)果是:[Milan, New Delhi, San Francisco, Tokyo, london]

在java 7我們是使用Collections.sort()接受一個數(shù)組參數(shù),對數(shù)組進行排序。在java 8之后可以直接調(diào)用集合類的sort()方法進行排序。sort()方法可以傳入一個字符串的排序規(guī)則,如:String.CASE_INSENSITIVE_ORDER,也可以傳入一個排序器Comparator.naturalOrder()作為參數(shù)。

二、整數(shù)類型List排序

JAVA像SQL一樣對List對象集合進行排序

按數(shù)字的自然順序排序,結(jié)果是[1, 2, 4, 6, 9]

三、按對象字段對對象List排序

這個功能就比較有意思了,舉個例子大家理解一下。假設我們有一個類Movie,有三個成員變量分別是starred(是否收藏), title(電影名稱), rating(評分)。

JAVA像SQL一樣對List對象集合進行排序

首先,我們創(chuàng)建了四個Movie對象,然后將它們轉(zhuǎn)換為List 然后重點的的代碼:使用了函數(shù)應用Movie::getTitle作為對象的排序字段,即按照電影的title作為排序字段 然后調(diào)用List的forEach方法將List排序結(jié)果打印出來,如下(當然我們重寫了toString方法,不然打印結(jié)果沒有意義):

JAVA像SQL一樣對List對象集合進行排序

如果我們希望List按照Title的倒序排序,就使用reversed()方法。如:Comparator.comparing(Movie::getTitle).reversed()。

四、使用自定義Comparator排序

我們自定義一個排序器,實現(xiàn)compare函數(shù)。返回0表示元素相等,-1表示前一個元素小于后一個元素,1表示前一個元素大于后一個元素。這個規(guī)則似乎和java 8之前沒什么區(qū)別。

JAVA像SQL一樣對List對象集合進行排序

最終的打印結(jié)果如下,按照started的自定義規(guī)則進行排序。

JAVA像SQL一樣對List對象集合進行排序

這段代碼如果以lambda表達式簡寫。箭頭左側(cè)是參數(shù),右側(cè)是函數(shù)體,參數(shù)類型和返回值根據(jù)上下文自動判斷。如下:

JAVA像SQL一樣對List對象集合進行排序

五、通過Comparator鏈對對象List排序

JAVA像SQL一樣對List對象集合進行排序

上面這段代碼先是按是否收藏的倒序排序,再按照電影的評分大小的倒序排序,排序結(jié)果如下:

JAVA像SQL一樣對List對象集合進行排序

以上就是JAVA像SQL一樣對List對象集合進行排序的詳細內(nèi)容,更多關(guān)于JAVA 對list集合排序的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Java
相關(guān)文章:
主站蜘蛛池模板: 欧美成人在线影院 | 日本三级韩国三级在线观看a级 | 国产亚洲精品2021自在线 | 奇米5555 | 韩国v欧美v亚洲v日本v | 日韩视频在线观看 | 女人张腿让男桶免费视频网站 | 亚洲图片 自拍偷拍 | 一级一片一a一片 | 国产a国产| 亚洲黄色免费网址 | 中文字幕精品一区二区绿巨人 | 国产精品拍拍拍福利在线观看 | 亚洲久久久 | 岛国片欧美一级毛片 | 欧美日本视频一区 | 俺来也俺来也天天夜夜视频 | 国产成人在线免费 | 久久综合久久美利坚合众国 | 久草草视频在线观看免费高清 | 日韩一区二区三区在线播放 | 日本三区视频 | 欧美片网站免费 | 男女免费观看视频 | 亚洲欧美日韩国产专区一区 | 国产韩国精品一区二区三区久久 | 99久久久精品免费观看国产 | 日韩欧美国产一区二区三区 | 国产精品毛片va一区二区三区 | 欧美精品hdvdeosex4k | 一级做a爰片久久毛片鸭王 一级做a爰全过程免费视频毛片 | 免费a级| 成年女人在线视频 | 午夜性色福利视频在线视频 | 亚洲综合无码一区二区 | 亚洲人成综合网站在线 | 亚洲免费人成在线视频观看 | 日韩特级片 | 亚洲日本韩国在线 | 久久久久国产 | 成人精品一级毛片 |