国产精品一区三区,91精品国产色综合久久不卡粉嫩 ,久久久久久久91,7777久久香蕉成人影院

二維碼
微世推網(wǎng)

掃一掃關(guān)注

當(dāng)前位置: 首頁(yè) » 企業(yè)商訊 » 汽車行業(yè) » 正文

Java修煉終極指南_192_引入流比較器

放大字體  縮小字體 發(fā)布日期:2024-05-19 17:43:23    作者:郭煜軒    瀏覽次數(shù):153
導(dǎo)讀

假設(shè)我們有以下三個(gè)列表(一個(gè)數(shù)字列表,一個(gè)字符串列表,和一個(gè) Car 列表):ListInteger nrs = new ArrayList();ListString strs = new ArrayList();ListCar cars = List.of(...);public class Car {private final

假設(shè)我們有以下三個(gè)列表(一個(gè)數(shù)字列表,一個(gè)字符串列表,和一個(gè) Car 列表):

List<Integer> nrs = new ArrayList<>();List<String> strs = new ArrayList<>();List<Car> cars = List.of(...);public class Car { private final String brand; private final String fuel; private final int horsepower; ...}

接下來(lái),我們想要在流管道中對(duì)這些列表進(jìn)行排序。

通過自然順序排序 通過自然順序排序非常簡(jiǎn)單。我們所要做得就是調(diào)用內(nèi)置得中間操作 sorted():

nrs.stream() .sorted() .forEach(System.out::println);strs.stream() .sorted() .forEach(System.out::println);

如果 nrs 包含 1, 6, 3, 8, 2, 3, 和 0,那嗎 sorted() 將產(chǎn)生 0, 1, 2, 3, 3, 6, 和 8。因此,對(duì)于數(shù)字,自然順序是按值升序。如果 strs 包含 "book", "old", "new", "quiz", "around", 和 "tick",那嗎 sorted() 將產(chǎn)生 "around", "book", "new", "old", "quiz", 和 "tick"。因此,對(duì)于字符串,自然順序是按字母順序。

如果我們顯式地通過 sorted(Comparator<? super T> comparator) 調(diào)用 Integer#compareTo() 和 String#compareTo(),也專業(yè)獲的相同得結(jié)果:

nrs.stream() .sorted((n1, n2) -> n1pareTo(n2)) .forEach(System.out::println);strs.stream() .sorted((s1, s2) -> s1pareTo(s2)) .forEach(System.out::println);

或者,我們專業(yè)使用 java.util.Comparator 功能接口,如下所示:

nrs.stream() .sorted(Comparator.naturalOrder()) .forEach(System.out::println);strs.stream() .sorted(Comparator.naturalOrder()) .forEach(System.out::println);

這三種方法都返回相同得結(jié)果。

反轉(zhuǎn)自然順序 通過 Comparator.reverseOrder() 專業(yè)反轉(zhuǎn)自然順序,如下所示:

nrs.stream() .sorted(Comparator.reverseOrder()) .forEach(System.out::println);strs.stream() .sorted(Comparator.reverseOrder()) .forEach(System.out::println);

如果 nrs 包含 1, 6, 3, 8, 2, 3, 和 0,那嗎 sorted() 將產(chǎn)生 8, 6, 3, 3, 2, 1, 和 0。反轉(zhuǎn)數(shù)字得自然順序會(huì)的到按值降序。如果 strs 包含 "book", "old", "new", "quiz", "around", 和 "tick",那嗎 sorted() 將產(chǎn)生 "tick", "quiz", "old", "new", "book", 和 "around"。因此,對(duì)于字符串,反轉(zhuǎn)自然順序會(huì)的到按字母順序反轉(zhuǎn)。

排序和空值 如果 nrs/strs 也包含空值,那嗎所有前面得示例都會(huì)拋出 NullPointerException。但是,java.util.Comparator 公開了兩種方法,最優(yōu)我們首先(nullsFirst(Comparator<? super T> comparator))或最后(nullsLast(Comparator<? super T> comparator))對(duì)空值進(jìn)行排序。它們專業(yè)在以下示例中使用:

nrs.stream() .sorted(Comparator.nullsFirst(Comparator.naturalOrder())) .forEach(System.out::println); nrs.stream() .sorted(Comparator.nullsLast(Comparator.naturalOrder())) .forEach(System.out::println);nrs.stream() .sorted(Comparator.nullsFirst(Comparator.reverseOrder())) .forEach(System.out::println);

第三個(gè)示例首先對(duì)空值進(jìn)行排序,然后按降序排序數(shù)字。

敬請(qǐng)關(guān)注寫自定義比較器 有時(shí)我們需要自定義比較器。例如,如果我們想要按最后一個(gè)字符升序?qū)?strs 進(jìn)行排序,那嗎我們專業(yè)敬請(qǐng)關(guān)注寫一個(gè)自定義比較器,如下所示:

strs.stream() .sorted((s1, s2) -> Characterpare(s1.charAt(s1.length() - 1), s2.charAt(s2.length() - 1))) .forEach(System.out::println);

如果 strs 包含 "book", "old", "new", "quiz", "around", 和 "tick",那嗎 sorted() 將產(chǎn)生 "old", "around", "book", "tick", "new", 和 "quiz"。

但是,自定義比較器通常用于對(duì)我們得模型進(jìn)行排序。例如,如果我們需要對(duì) cars 列表進(jìn)行排序,那嗎我們需要定義一個(gè)比較器。我們不能只是說(shuō):

cars.stream() .sorted() .forEach(System.out::println);

這將無(wú)法敬請(qǐng)關(guān)注譯,因?yàn)?Car 對(duì)象沒有比較器。一種方法是實(shí)現(xiàn) Comparable 接口并重寫 compareTo(Car c) 方法。例如,如果我們想按馬力升序?qū)ζ囘M(jìn)行排序,那嗎我們首先按照以下方式實(shí)現(xiàn) Comparable:

public class Car implements Comparable<Car> { ... 等Override public int compareTo(Car c) { return this.getHorsepower() > c.getHorsepower() ? 1 : this.getHorsepower() < c.getHorsepower() ? -1 : 0; }}

現(xiàn)在,我們專業(yè)成功地敬請(qǐng)關(guān)注寫這個(gè):

cars.stream() .sorted() .forEach(System.out::println);

或者,如果我們不能更改 Car 代碼,我們專業(yè)嘗試使用現(xiàn)有得 Comparator 方法之一,該方法最優(yōu)我們推送一個(gè)包含排序鍵得函數(shù),并返回一個(gè)自動(dòng)按該鍵進(jìn)行比較得比較器。由于馬力是一個(gè)整數(shù),我們專業(yè)使用 comparingInt(ToIntFunction<? super T> keyExtractor),如下所示:

cars.stream() .sorted(ComparatorparingInt(Car::getHorsepower)) .forEach(System.out::println);

或者,以相反得順序:

cars.stream() .sorted(ComparatorparingInt( Car::getHorsepower).reversed()) .forEach(System.out::println);

您專家還對(duì) comparingLong(ToLongFunction) 和 comparingDouble(ToDoubleFunction) 感興趣。ToIntFunction、ToLongFunction 和 ToDoubleFunction 是 Function 得特化。在這種情況下,我們專業(yè)說(shuō)什嗎 comparingInt()、comparingLong() 和 comparingDouble() 是 comparing() 得特化,它有兩種口味:comparing(Function<? super T,? extends U> keyExtractor) 和 comparing(Function<? super T,? extends U> keyExtractor, Comparator<? super U> keyComparator)。以下是使用第二種口味得 comparing() 對(duì)汽車按燃料類型(自然順序)升序排序得示例,空值放在最后:

cars.stream() .sorted(Comparatorparing(Car::getFuel, Comparator.nullsLast(Comparator.naturalOrder()))) .forEach(System.out::println);

這是另一個(gè)示例,用于按燃料類型最后一個(gè)字符升序?qū)ζ囘M(jìn)行排序,空值放在最后:

cars.stream() .sorted(Comparatorparing(Car::getFuel, Comparator.nullsLast((s1, s2) -> Characterpare(s1.charAt(s1.length() - 1), s2.charAt(s2.length() - 1))))) .forEach(System.out::println);

完成!在下一個(gè)問題中,我們將對(duì)一個(gè)映射進(jìn)行排序。

 
(文/郭煜軒)
免責(zé)聲明
本文僅代表發(fā)布者:郭煜軒個(gè)人觀點(diǎn),本站未對(duì)其內(nèi)容進(jìn)行核實(shí),請(qǐng)讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問題,請(qǐng)及時(shí)聯(lián)系我們刪除處理郵件:weilaitui@qq.com。
 

Copyright?2015-2025 粵公網(wǎng)安備 44030702000869號(hào)

粵ICP備16078936號(hào)

微信

關(guān)注
微信

微信二維碼

WAP二維碼

客服

聯(lián)系
客服

聯(lián)系客服:

24在線QQ: 770665880

客服電話: 020-82301567

E_mail郵箱: weilaitui@qq.com

微信公眾號(hào): weishitui

韓瑞 小英 張澤

工作時(shí)間:

周一至周五: 08:00 - 24:00

反饋

用戶
反饋

国产精品一区三区,91精品国产色综合久久不卡粉嫩 ,久久久久久久91,7777久久香蕉成人影院
国产精品av免费在线观看 | 最新精品在线| 欧美色大人视频| 亚洲视频在线一区观看| 国产精品久久影院| 欧美日本韩国一区二区三区| 亚洲午夜av电影| 国产偷久久久精品专区| 欧美三级日本三级少妇99| 欧美亚洲视频在线看网址| 黑人中文字幕一区二区三区| 欧美午夜女人视频在线| 欧美在线网址| 亚洲福利视频网| 国产午夜精品在线观看| 麻豆乱码国产一区二区三区| 9人人澡人人爽人人精品| 亚洲国产精品久久久久久女王| 欧美日韩国产成人精品| 另类欧美日韩国产在线| 日韩写真在线| 国产亚洲免费的视频看| 国产精品视频区| 老巨人导航500精品| 99国产精品久久久| 亚洲精品视频一区| 国产区精品在线观看| 国产精品久久久久久久第一福利| 久久久久久久久蜜桃| 亚洲免费观看在线视频| 亚洲第一黄网| 国产精品日韩在线| 国产精品久久一卡二卡| 久热精品视频| 可以看av的网站久久看| 亚洲在线视频观看| 在线观看国产精品网站| 激情视频一区二区三区| 欧美性一二三区| 欧美午夜无遮挡| 老司机精品视频网站| 久久一区视频| 午夜在线视频一区二区区别| 亚洲人成在线播放| 日韩网站免费观看| 精品成人免费| 亚洲国产高清自拍| 国产日韩一区| 极品少妇一区二区| 国产精品青草久久| 国产亚洲精品aa| 国产精品高潮呻吟久久av黑人| 国产精品成人一区二区| 欧美激情一区二区| 国产精品扒开腿爽爽爽视频| 欧美国产1区2区| 欧美日韩一区在线观看| 欧美激情第10页| 国产精品成人在线| 欧美日韩免费精品| 国产精品亚洲视频| 欧美午夜精品久久久| 国产日本精品| 国产精品毛片大码女人| 国产婷婷精品| 国产精品自拍网站| 合欧美一区二区三区| 国产精品免费一区二区三区在线观看| 国产精品毛片高清在线完整版| 欧美日韩国产在线一区| 国产精品视频免费一区| 欧美色视频日本高清在线观看| 国产精品另类一区| 国产精品v日韩精品v欧美精品网站| 国产精品美女久久久免费| 欧美日韩国产影片| 国产精品视频男人的天堂| 欧美私人网站| 国产一区二区久久久| 国产欧美日韩在线视频| 在线播放豆国产99亚洲| 黄色工厂这里只有精品| 亚洲精品视频在线观看免费| 91久久中文字幕| 亚洲视频精选在线| 一区二区国产日产| 久久精品99国产精品日本| 欧美大片第1页| 欧美国产第二页| 国产精品自拍小视频| 国产精品呻吟| 亚洲国产日韩欧美在线图片 | 国产精品久久久久一区二区| 欧美日韩成人精品| 国产精品午夜av在线| 国产精品视频一区二区三区| 有坂深雪在线一区| 亚洲国产一区二区视频| 亚洲欧美国产视频| 欧美二区视频| 欧美片在线观看| 国产一区二区中文字幕免费看| 国产在线视频欧美| 在线午夜精品| 久久综合国产精品| 蜜臀va亚洲va欧美va天堂| 国产精品九九久久久久久久| 国产精品乱人伦一区二区| 亚洲国产综合视频在线观看| 亚洲国产精品女人久久久| 亚洲影视在线| 欧美福利一区二区| 欧美女主播在线| 一区二区视频免费在线观看 | 欧美一区二区三区精品| 欧美激情视频在线播放 | 日韩视频免费观看高清完整版| 午夜一级久久| 欧美麻豆久久久久久中文| 欧美香蕉视频| 亚洲激情偷拍| 一区二区电影免费观看| 另类尿喷潮videofree| 国产日韩欧美一区二区| 黄色成人av在线| 午夜精品视频在线观看| 欧美婷婷六月丁香综合色| 国产精品一二三四区| 9l国产精品久久久久麻豆| 噜噜噜躁狠狠躁狠狠精品视频| 欧美日韩国产高清视频| 亚洲国产精品成人va在线观看| 9色精品在线| 欧美精品18+| 亚洲级视频在线观看免费1级| 久久婷婷麻豆| 欧美日韩美女| 亚洲免费大片| 欧美国产欧美综合 | 久久久久久久91| 欧美激情亚洲精品| 亚洲国产精品久久久久秋霞不卡| 久久精品综合| 欧美理论在线播放| 亚洲黄色在线观看| 免费视频一区二区三区在线观看| 国产精品va在线| 一区二区三区四区精品| 欧美日韩国产免费观看| 国产一区二区三区在线观看网站| 午夜精品视频在线观看| 国产精品一区二区三区免费观看| 影音先锋久久资源网| 久久天天躁夜夜躁狠狠躁2022| 国产一区二区三区在线观看精品 | 久久综合久久88| 国产一区二区三区四区老人| 日韩一区二区高清| 欧美日韩视频免费播放| 夜夜嗨av一区二区三区四区| 欧美激情按摩在线| 国产又爽又黄的激情精品视频 | 亚洲国内欧美| 欧美成人免费网站| 亚洲精品国产精品国自产观看| 欧美波霸影院| 国产视频在线观看一区| 欧美在线一二三四区| 国精品一区二区| 一区二区高清在线| 国产精品毛片在线看| 先锋影音一区二区三区| 国产午夜久久| 久久天堂av综合合色| 国产精品露脸自拍| 欧美在线一二三四区| 黑人一区二区三区四区五区| 久久露脸国产精品| 国产精品免费一区豆花| 欧美一区二区成人6969| 国内精品久久久久影院色| 久久这里有精品视频| 国产一区二区三区高清| 麻豆成人av| 亚洲伦理久久| 欧美日韩一级片在线观看| 亚洲片国产一区一级在线观看| 欧美日韩精品三区| 亚洲欧美日韩天堂| 韩国欧美一区| 欧美高清视频在线播放| 亚洲第一福利社区| 欧美精品www| 亚洲欧美一区二区激情| 国产一区二区三区高清在线观看 | 欧美日韩一区在线播放| 亚洲欧美精品suv| 国产伪娘ts一区| 欧美高清成人| 亚洲国产日韩在线|