日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
「lambda表達(dá)式」Comparator接口

Comparator 接口包含很多方便的靜態(tài)方法來(lái)創(chuàng)建比較器。 這些方法可以用于 lambda 表達(dá)式或方法引用。

靜態(tài) comparing 方法取一個(gè)“ 鍵提取器” 函數(shù), 它將類(lèi)型 T 映射為一個(gè)可比較的類(lèi)型 ( 如 String ) 。對(duì)要比較的對(duì)象應(yīng)用這個(gè)函數(shù), 然后對(duì)返回的鍵完成比較。例如,假設(shè)有一個(gè) Person 對(duì)象數(shù)組,可以如下按名字對(duì)這些對(duì)象排序: Arrays.sort(people, Comparator.comparing(Person::getName));

與手動(dòng)實(shí)現(xiàn)一個(gè) Compamtor 相比, 這當(dāng)然要容易得多。另外,代碼也更為清晰, 因?yàn)轱@然我們都希望按人名來(lái)進(jìn)行比較。

可以把比較器與 thenComparing 方法串起來(lái)。 例如:

Arrays.sort(people,
Comparator.comparing(Person::getlastName)
.thenComparing(Person::getFirstName));

如果兩個(gè)人的姓相同, 就會(huì)使用第二個(gè)比較器。 這些方法有很多變體形式。可以為 comparing 和 thenComparing 方法提取的鍵指定一個(gè) 比較器。例如,可以如下根據(jù)人名長(zhǎng)度完成排序:

Arrays.sort(people, Comparator.comparing(Person::getName,
(s, t) -> Integer.compare(s.length(), t.length()));

另外, comparing 和 thenComparing 方法都有變體形式,可以避免 int、 long 或 double 值 的裝箱。要完成前一個(gè)操作, 還有一種更容易的做法:

Arrays.sort(people, Comparator.comparingInt(p -> p.getName().length()));

如果鍵函數(shù)可以返回 null , 可能就要用到 nullsFirst 和 nullsLast 適配器。這些靜態(tài)方法會(huì)修改現(xiàn)有的比較器,從而在遇到 null 值時(shí)不會(huì)拋出異常, 而是將這個(gè)值標(biāo)記為小于或 大于正常值。例如, 假設(shè)一個(gè)人沒(méi)有中名時(shí) getMiddleName 會(huì)返回一個(gè) null, 就可以使用 Comparator.comparing(Person::getMiddleName(), Comparator.nullsFirst(… ) 。

nullsFirst 方法需要一個(gè)比較器,在這里就是比較兩個(gè)字符串的比較器。naturalOrder 方法可以為任何實(shí)現(xiàn)了 Comparable 的類(lèi)建立一個(gè)比較器。在這里,Comparator.naturalOrder() 正是我們需要的。下面是一個(gè)完整的調(diào)用, 可以按可能為 null 的中名進(jìn)行排序。這里使用了一個(gè)靜態(tài)導(dǎo)入 java.util.Comparator.* 以便理解這個(gè)表達(dá)式。注意 naturalOrder 的類(lèi)型可以推導(dǎo)得出。

Arrays.sort(people, comparing(Person::getMiddleName , nullsFirst(naturalOrder())));

靜態(tài) reverseOrder 方法會(huì)提供自然順序的逆序。要讓比較器逆序比較, 可以使用 reversed 實(shí)例方法。例如 naturalOrder().reversed() 等同于 reverseOrder()。


網(wǎng)站題目:「lambda表達(dá)式」Comparator接口
當(dāng)前URL:http://www.5511xx.com/article/dpggjgh.html