日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java集合排序規則接口Comparator用法解析

瀏覽:2日期:2022-08-24 16:42:56

1. 前言

最近用到了集合排序(基于 Java 8)。現在我能用 Stream 的就用 Stream ,真香!排序可以這么寫:

List<People> peoples = new ArrayList<>();// 中間省略// 按照年齡從小到大排序peoples.sort(Comparator.comparing(People::getAge));

這里排序用到了一個關鍵接口 java.util.Comparator。排序比較作為業務中經常出現的需求,我們有必要研究一下這個接口。

2. Comparator 概念

Comparator 是一個函數式接口。它經常用于沒有天然排序的集合進行排序,如 Collections.sort 或 Arrays.sort或者對于某些有序數據結構的排序規則進行聲明,如 TreeSet 、TreeMap 。也就是該接口主要用來進行集合排序。

3. Comparator 中的方法

Comparator 作為一個函數式接口只有一個抽象方法,但是它有很多的默認方法,我們來認識一下這些方法們。

3.1 compare 抽象方法

作為Comparator 唯一的抽象方法,int compare(T o1,T o2) 比較兩個參數的大小, 返回負整數,零,正整數 ,分別代表 o1&lt;o2、o1=o2、o1&gt;o2,通常分別返回 -1、0 或 1。偽表達式:

// 輸入兩個同類型的對象 ,輸出一個比較結果的int數字(x1,x2)-> int

實現該方法一定要注意以下事項:

必須保證compare(x,y) 和compare(y,x) 的值的和必須為 0 。 必須保證比較的順序關系是可傳遞的,如果compare(x,y)&gt;0 而且compare(y,z)&gt;0 則 compare(x,z)&gt;0。 如果存在 compare(x,y)=0,則對于 z 而言,存在 compare(x, z)==compare(y, z)。

然而并不 嚴格要求(compare(x, y)==0) == (x.equals(y))。一般說來,任何違背這個條件的 Comparator 實現都應該明確指出這一事實情況。

3.2 comparing 系列方法

從 Java 8 開始,Comparator 提供了一系列的靜態方法,并通過函數式的風格賦予 Comparator 更加強大和方便的功能,我們暫且稱它們為 comparing系列方法。

public static <T, U> Comparator<T> comparing( Function<? super T, ? extends U> keyExtractor, Comparator<? super U> keyComparator) { Objects.requireNonNull(keyExtractor); Objects.requireNonNull(keyComparator); return (Comparator<T> & Serializable) (c1, c2) -> keyComparator.compare(keyExtractor.apply(c1), keyExtractor.apply(c2)); }

該方法是該系列方法的基本方法。是不是看上去很難懂的樣子?我們來分析一下該方法。它一共兩個參數都是函數式接口。

第一個參數 Function&lt;? super T, ? extends U&gt; keyExtractor 表示輸入一個是 T 類型對象,輸出一個 U 類型的對象,舉個例子,輸入一個 People 對象返回其年齡 Integer 數值:

// people -> people.getAge(); 轉換為下面方法引用Function<People, Integer> getAge = People::getAge;

第二個參數 keyComparator就很好理解了,表示使用的比較規則。

對 c1,c2 按照 第一個參數 keyExtractor 提供的規則進行提取特征,然后第二個參數keyComparator對這兩個特征進行比較。下面的式子其實可以概括為 3.1 的 (x1,x2)-&gt; int

(c1, c2) -> keyComparator.compare(keyExtractor.apply(c1),keyExtractor.apply(c2))

Comparator& Serializable 為 Java 8 新特性:同時滿足這兩個類型約束

理解了這個方法后,其它該系列的方法就好理解了,這里不再贅述。目前 comparing 系列方法使用更加廣泛。我們舉一些例子:

List<People> peoples = new ArrayList<>();// ………………// 按照年齡從低到高排序peoples.sort(Comparator.comparing(People::getAge));// 按照年齡從高到低排序peoples.sort(Comparator.comparing(People::getAge, (x, y) -> -x.compareTo(y)));

同樣你可以使用 java.util.Collections 或者 Stream 提供的排序方法來使用Comparator。

4. 小結

今天對 Comparator進行了簡單的分析,它用于構建集合排序的規則,在日常開發中非常有用。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久国产精品久久w女人spa| 男女激情视频一区| 婷婷综合一区| 日本精品影院| 成人羞羞视频播放网站| 欧美日韩在线网站| 麻豆视频在线观看免费网站黄| 成人三级高清视频在线看| 亚洲免费福利| 久久国产88| 国产亚洲一区在线| 欧美va天堂在线| 亚洲aⅴ网站| 亚洲一二av| 亚洲精品成a人ⅴ香蕉片| 精品国产18久久久久久二百| 日韩av免费大片| 久久亚洲成人| 久久国产中文字幕| 高清在线一区| 蜜臀国产一区| 国产在线观看www| 国产欧美日本| 麻豆久久精品| 婷婷亚洲五月色综合| 国产精品久久久久久模特| 99精品国产一区二区三区| 少妇精品久久久一区二区| 国产精品国产三级国产在线观看| 激情久久婷婷| 日韩精品中文字幕第1页| 久久久久久夜| 精品亚洲a∨| 亚洲一级大片| 中国女人久久久| 国产精品黑丝在线播放| 久久久久久色 | 欧美日韩一区二区综合| 日韩精品一页| 国产精品一区二区三区av麻| 亚洲韩日在线| 老司机免费视频一区二区| 一本一道久久a久久| 高清日韩中文字幕| 午夜久久福利| 亚洲va中文在线播放免费| 亚洲制服欧美另类| 国产麻豆综合| 日韩免费久久| 精品国产a一区二区三区v免费| 国产极品嫩模在线观看91精品| 999在线观看精品免费不卡网站| 成人国产精品久久| 中日韩男男gay无套| 亚洲精品一二三**| 日本99精品| 国产精品一级| 国产丝袜一区| 日韩综合一区二区三区| 亚洲一区二区成人| 精品国产精品国产偷麻豆| 国产欧美91| 国产精品极品国产中出| 91九色综合| 免费成人性网站| 国产精品福利在线观看播放| 青青青国产精品| 在线午夜精品| 亚洲18在线| 亚洲一区二区三区四区电影| 石原莉奈在线亚洲三区| 日韩一区自拍| 久久久久午夜电影| 亚洲国产欧美日本视频| 99成人在线| 国产欧美一区二区三区精品酒店| 国产精品啊v在线| 欧美天堂在线| 国产一区二区三区不卡视频网站 | 欧美va天堂| 91亚洲一区| 国产成人精品亚洲日本在线观看| 午夜一区在线| 免费福利视频一区二区三区| 99成人超碰| 91久久黄色| 丝袜诱惑制服诱惑色一区在线观看| 亚洲欧美网站在线观看| 热久久久久久久| 在线日韩成人| 蜜臀av一区二区在线免费观看| 欧美日韩国产高清| 精品免费视频| 快she精品国产999| 日韩国产欧美视频| 卡一卡二国产精品| 日韩免费精品| 国产福利91精品一区二区| 好吊日精品视频| av一区二区高清| 日韩va欧美va亚洲va久久| 亚洲香蕉久久| 成人台湾亚洲精品一区二区| 麻豆精品网站| 中文亚洲免费| 成人精品视频| 综合一区av| 日韩电影免费在线观看| 怡红院精品视频在线观看极品| 欧美亚洲tv| 国产成人久久| 欧美91在线|欧美| 午夜久久99| 国产精品sm| 另类av一区二区| www在线观看黄色| 国产毛片久久| 在线午夜精品| 欧美日韩在线观看视频小说| 成人午夜在线| 久久这里只有| 日韩三区免费| av最新在线| 色黄视频在线观看| 亚洲精品在线影院| 国产精久久一区二区| 一区二区国产精品| 欧美不卡高清| 亚洲精品伊人| 玖玖精品视频| 在线看片日韩| 水野朝阳av一区二区三区| 国产伊人精品| 91精品成人| 国产精品v日韩精品v欧美精品网站| 久久精品99国产精品| 在线视频日韩| 免费av一区二区三区四区| av中文资源在线资源免费观看| 亚洲精品在线二区| 中文字幕日本一区二区| 在线视频精品| 国产精品腿扒开做爽爽爽挤奶网站| 国产精品蜜月aⅴ在线| 日韩精品亚洲一区二区三区免费| 国产精品2023| 国产综合亚洲精品一区二| 91精品二区| 国产视频亚洲| sm捆绑调教国产免费网站在线观看 | 国产偷自视频区视频一区二区| 欧美一区免费| 国产视频一区免费看| 欧美亚洲人成在线| 亚洲最新av| 国产免费成人| 视频精品一区| 国产日韩欧美一区二区三区| 欧美日一区二区三区在线观看国产免 | 精品欧美一区二区三区在线观看| 国产理论在线| 激情综合亚洲| 国产精品普通话对白| 一区二区不卡| 日本不卡在线视频| 中文不卡在线| 综合激情一区| 日韩制服丝袜先锋影音| aⅴ色国产欧美| 精品视频国产| 日产精品一区二区| 日韩在线短视频| 国产日韩在线观看视频| 久久精品三级| 久久麻豆精品| 国产乱码精品一区二区亚洲| 在线天堂资源www在线污| 老司机免费视频一区二区三区| 毛片不卡一区二区| 欧美性感美女一区二区| 亚洲欧美日韩国产一区| 国产亚洲一卡2卡3卡4卡新区| 免费在线亚洲欧美| 欧美日一区二区在线观看| 免费欧美在线视频| 欧美精品中文字幕亚洲专区| 欧美日韩精品免费观看视欧美高清免费大片| 国产一精品一av一免费爽爽| 91综合网人人| 免费国产自久久久久三四区久久| 91麻豆国产自产在线观看亚洲| 日韩欧美在线中字| 蜜桃视频一区二区三区在线观看 | 视频精品一区二区| 婷婷精品久久久久久久久久不卡| 精品视频自拍| 亚洲欧美高清| 欧美成人基地 | 亚洲18在线| 免费亚洲婷婷|