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

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

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

瀏覽:4日期: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久久,三上悠亚国产精品一区二区三区
波多野结衣久久精品| 亚洲色图国产| 久久精品999| 国产日韩欧美三区| 麻豆成人91精品二区三区| 韩国女主播一区二区三区| 91亚洲人成网污www| 日韩精品免费一区二区三区| 99精品网站| 爽好久久久欧美精品| 日韩国产欧美在线播放| 国产精品xxx在线观看| 日韩精品视频网| 国产精品一区毛片| 欧美激情另类| 国产一区白浆| 久久国产乱子精品免费女| 精品国产美女a久久9999| 国产综合视频| 日韩激情视频网站| 中文在线资源| 综合欧美亚洲| 国产精品99在线观看| 蜜臀av免费一区二区三区| 亚洲精品动态| 日韩精品2区| 日韩欧美2区| 精品视频一区二区三区四区五区 | 国产精品v亚洲精品v日韩精品| 国精品产品一区| 影音国产精品| 麻豆成人在线观看| 99国内精品| 国产aⅴ精品一区二区四区| 狠狠色综合网| 精品午夜视频| 免费日韩av| 成人精品高清在线视频| 亚洲激情婷婷| 另类小说一区二区三区| 国产精品美女久久久| 国产日产一区| 久久久精品久久久久久96| 88久久精品| 午夜免费一区| 成人在线视频免费| 91综合久久爱com| 在线日韩中文| 麻豆成人av在线| 一区二区三区国产在线| 999视频精品| 精品国产一区二区三区性色av| 六月婷婷一区| 99久久精品费精品国产| 国产伦精品一区二区三区千人斩| 美女毛片一区二区三区四区| 麻豆久久久久久久| 亚洲精品乱码久久久久久蜜桃麻豆 | 综合在线一区| 日韩精品久久久久久久电影99爱| 欧美日本不卡| 丝袜亚洲另类欧美| 欧美成人基地| 精品一二三区| 国产精品伊人| 在线精品国产亚洲| 亚洲午夜精品久久久久久app| 蜜桃久久久久| 欧美伊人影院| 免费看黄色91| 国产精品日本| 99久久亚洲精品| 91嫩草亚洲精品| 精品一区二区三区中文字幕| 欧美亚洲tv| 日韩欧美高清一区二区三区| 久久国产99| 亚洲女同中文字幕| 激情视频一区二区三区| 国产精品久久久久av电视剧| 嫩呦国产一区二区三区av| 欧美日韩99| 日韩av黄色在线| 欧美日韩一区二区国产| 日本一区二区中文字幕| 中文字幕日本一区| 一二三区精品| 免费人成精品欧美精品| 视频在线观看一区二区三区| 美女国产精品| 亚洲青青久久| 欧美综合精品| 国产精品一区二区精品视频观看 | 久久国产生活片100| 日本综合精品一区| 日韩av午夜在线观看| 欧美精品中文| 国产精品国码视频| 国产一区二区三区不卡视频网站 | 日韩欧美中文在线观看| 日本大胆欧美人术艺术动态| 亚洲一区二区毛片| 蜜桃av一区二区三区电影| 蜜桃久久久久久久| 热久久久久久| 另类综合日韩欧美亚洲| 国产69精品久久| 亚洲涩涩在线| 不卡一区综合视频| 亚洲欧美久久| 亚洲毛片在线免费| 国产激情欧美| 日韩精品中文字幕第1页| 亚洲先锋成人| 蜜臀精品久久久久久蜜臀| 玖玖精品视频| 欧美在线看片| 97精品视频在线看| 久久一级电影| 免费高清在线一区| 国产精品亚洲成在人线| 欧美xxxx中国| 日韩一区二区免费看| 日韩福利在线观看| 国产在线一区不卡| 9国产精品视频| 国产精品亚洲综合在线观看| 伊伊综合在线| 亚洲尤物av| 久久这里只有| 999精品在线| 日本不卡的三区四区五区| 国产成人免费视频网站视频社区| 视频小说一区二区| 日韩和欧美的一区| 最新中文字幕在线播放| 亚洲精华国产欧美| 欧美日韩调教| 香蕉成人av| 91成人福利| 亚洲成人精选| 久久97久久97精品免视看秋霞| 欧美色图国产精品| 久久精品超碰| 一区在线免费| 国产免费av一区二区三区| 在线看片福利| 日韩在线观看一区二区| 精品免费视频| 亚洲狼人精品一区二区三区| 超级白嫩亚洲国产第一| 免费久久精品视频| 高潮一区二区| 久久不见久久见免费视频7 | 日韩不卡一区| 免费久久精品视频| 韩国久久久久久| 亚洲性视频在线| 亚洲人成在线网站| 午夜久久av | 国产91在线精品| 日本亚洲最大的色成网站www | 婷婷精品视频| 精品一区二区三区免费看| 视频在线在亚洲| 欧美成a人免费观看久久| 欧美亚洲三级| 免费一区二区视频| 电影亚洲精品噜噜在线观看| 国产九九精品| 久久大逼视频| 999久久久国产精品| 国产一区二区三区久久| 国产日韩欧美一区二区三区在线观看| 五月综合激情| 日本а中文在线天堂| 国产日韩一区二区三区在线| 美女精品在线| 欧美日韩高清| 亚洲天堂一区二区| 国产专区精品| 国产精品美女午夜爽爽| 色狠狠一区二区三区| 另类av一区二区| 欧美在线亚洲| 日韩大片免费观看| 麻豆精品在线视频| 国产精品对白| 国产精品男女| 欧美日韩精品一区二区三区视频| 蜜臀va亚洲va欧美va天堂| 99视频一区| 亚洲欧洲一区| 亚洲精华国产欧美| 欧美日韩视频| 国产一级久久| 首页国产欧美日韩丝袜| 亚洲一区二区三区在线免费| 美国三级日本三级久久99| 老鸭窝毛片一区二区三区|