最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java使用lambda表達(dá)式多條件排序方式

 更新時(shí)間:2023年09月04日 15:09:34   作者:完美明天cxp  
這篇文章主要介紹了java使用lambda表達(dá)式多條件排序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

使用java的lambda表達(dá)式多條件排序

這里多條件是指同時(shí)生效

先把我的對(duì)象擺上

@Data
@AllArgsConstructor
@ToString
public class Student {
    private String name;
    private String age;
    private Integer id;
    private Integer score;
}

然后再準(zhǔn)備好排序的數(shù)據(jù)

List<Student> studentList = new ArrayList<>();
studentList.add(new Student("1", "222", 5, 8));
studentList.add(new Student("2", "111", 3, 9));
studentList.add(new Student("3", "224", 4, 6));
studentList.add(new Student("4", "333", 3, 11));
studentList.add(new Student("4", "444", 5, 6));
System.out.println(studentList);

這里的構(gòu)造按照實(shí)體里的屬性先后定的位置,1條件代表id,2條件代表score

有以下集中場(chǎng)景

System.out.println("例一--------------1升2升------------");
studentList = studentList.stream().sorted(Comparator.comparing(Student::getId).thenComparing(Student::getScore)).collect(Collectors.toList());
for (Student s : studentList) {
    System.out.println(s);
}
System.out.println("例二--------------1升2降------------");
studentList = studentList.stream().sorted(Comparator.comparing(Student::getId).reversed().thenComparing(Student::getScore).reversed()).collect(Collectors.toList());
for (Student s : studentList) {
    System.out.println(s);
}
System.out.println("例三--------------2降1升------------");
studentList = studentList.stream().sorted(Comparator.comparing(Student::getScore).reversed().thenComparing(Student::getId)).collect(Collectors.toList());
for (Student s : studentList) {
    System.out.println(s);
}
System.out.println("例四--------------1降2升------------");
studentList = studentList.stream().sorted(Comparator.comparing(Student::getId).reversed().thenComparing(Student::getScore)).collect(Collectors.toList());
for (Student s : studentList) {
    System.out.println(s);
}
System.out.println("例五--------------1降2降------------");
studentList = studentList.stream().sorted(Comparator.comparing(Student::getId).thenComparing(Student::getScore).reversed()).collect(Collectors.toList());
for (Student s : studentList) {
    System.out.println(s);
}

結(jié)果:

--------------1升2升------------
Student(name=2, age=111, id=3, score=9)
Student(name=4, age=333, id=3, score=11)
Student(name=3, age=224, id=4, score=6)
Student(name=4, age=444, id=5, score=6)
Student(name=1, age=222, id=5, score=8)
--------------1升2降------------
Student(name=4, age=333, id=3, score=11)
Student(name=2, age=111, id=3, score=9)
Student(name=3, age=224, id=4, score=6)
Student(name=1, age=222, id=5, score=8)
Student(name=4, age=444, id=5, score=6)
--------------2降1升------------
Student(name=4, age=333, id=3, score=11)
Student(name=2, age=111, id=3, score=9)
Student(name=1, age=222, id=5, score=8)
Student(name=3, age=224, id=4, score=6)
Student(name=4, age=444, id=5, score=6)
--------------1降2升------------
Student(name=4, age=444, id=5, score=6)
Student(name=1, age=222, id=5, score=8)
Student(name=3, age=224, id=4, score=6)
Student(name=2, age=111, id=3, score=9)
Student(name=4, age=333, id=3, score=11)
--------------1降2降------------
Student(name=1, age=222, id=5, score=8)
Student(name=4, age=444, id=5, score=6)
Student(name=3, age=224, id=4, score=6)
Student(name=4, age=333, id=3, score=11)
Student(name=2, age=111, id=3, score=9)

在這里注意

1升2降和2升1降有區(qū)別的,誰(shuí)在前誰(shuí)優(yōu)先級(jí)高;第一、三、四個(gè)例子都好理解,第二、五需要思考一下,這里的reversed()妙用。

reversed()是把列表倒過(guò)來(lái),所以1升2降,就是先把1降,然后再把1、2都倒置過(guò)來(lái),這樣就是1升2降了,所以1降2降就是再后面都倒置過(guò)來(lái)。

使用lambda表達(dá)式排序還是很nice啊,節(jié)省不少操作,但數(shù)據(jù)量最好不要太大。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java多線(xiàn)程同步工具類(lèi)CyclicBarrier的使用

    Java多線(xiàn)程同步工具類(lèi)CyclicBarrier的使用

    本文主要介紹了Java多線(xiàn)程同步工具類(lèi)CyclicBarrier的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • java?oshi如何查看cpu信息

    java?oshi如何查看cpu信息

    這篇文章主要介紹了java?oshi如何查看cpu信息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java中的悲觀(guān)鎖與樂(lè)觀(guān)鎖是什么

    Java中的悲觀(guān)鎖與樂(lè)觀(guān)鎖是什么

    這篇文章主要介紹了Java中的悲觀(guān)鎖與樂(lè)觀(guān)鎖是什么,幫助大家更好的理解和學(xué)習(xí)Java鎖的相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-09-09
  • IDEA連接mysql報(bào)錯(cuò)的問(wèn)題及解決方法

    IDEA連接mysql報(bào)錯(cuò)的問(wèn)題及解決方法

    這篇文章主要介紹了IDEA連接mysql報(bào)錯(cuò)的問(wèn)題及解決方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java實(shí)現(xiàn)將txt文件轉(zhuǎn)成xls文件的方法

    Java實(shí)現(xiàn)將txt文件轉(zhuǎn)成xls文件的方法

    今天小編就為大家分享一篇Java實(shí)現(xiàn)將txt文件轉(zhuǎn)成xls文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • java8 stream的多字段排序?qū)崿F(xiàn)(踩坑)

    java8 stream的多字段排序?qū)崿F(xiàn)(踩坑)

    這篇文章主要介紹了java8 stream的多字段排序?qū)崿F(xiàn)(踩坑),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • spring配置定時(shí)任務(wù)的幾種方式總結(jié)

    spring配置定時(shí)任務(wù)的幾種方式總結(jié)

    這篇文章主要介紹了spring配置定時(shí)任務(wù)的幾種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • JAVA 枚舉單例模式及源碼分析的實(shí)例詳解

    JAVA 枚舉單例模式及源碼分析的實(shí)例詳解

    這篇文章主要介紹了 JAVA 枚舉單例模式及源碼分析的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-08-08
  • Java如何將字符串String轉(zhuǎn)換為整型Int

    Java如何將字符串String轉(zhuǎn)換為整型Int

    這篇文章主要介紹了Java如何將字符串String轉(zhuǎn)換為整型Int,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • 這一次搞懂Spring的XML解析原理說(shuō)明

    這一次搞懂Spring的XML解析原理說(shuō)明

    這篇文章主要介紹了這一次搞懂Spring的XML解析原理說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08

最新評(píng)論

姚安县| 松江区| 多伦县| 义乌市| 长武县| 铁岭市| 广平县| 绥棱县| 比如县| 漯河市| 诸暨市| 榆中县| 鄂尔多斯市| 汶上县| 万荣县| 莒南县| 丹凤县| 黄龙县| 永兴县| 松阳县| 灵川县| 宁武县| 绍兴县| 珠海市| 贡山| 宿迁市| 姜堰市| 竹山县| 吉林市| 上思县| 新巴尔虎右旗| 泰来县| 佳木斯市| 锦州市| 岑巩县| 贵溪市| 高要市| 灌云县| 郁南县| 班玛县| 吴江市|