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

Java中Stream流對多個(gè)字段進(jìn)行排序的方法

 更新時(shí)間:2023年10月20日 10:10:17   作者:哥的冷酷,你模仿不來  
我們在處理數(shù)據(jù)的時(shí)候經(jīng)常會(huì)需要進(jìn)行排序后再返回給前端調(diào)用,比如按照時(shí)間升序排序,前端展示數(shù)據(jù)就是按時(shí)間先后進(jìn)行排序,下面這篇文章主要給大家介紹了關(guān)于Java中Stream流對多個(gè)字段進(jìn)行排序的相關(guān)資料,需要的朋友可以參考下

前言

談起Java 8,不少熟悉它的人,都會(huì)知道有一個(gè)對我們幫助很大的新特性,沒錯(cuò),就是我們在項(xiàng)目中經(jīng)常用到的stream,它對我們處理數(shù)據(jù)的過程中提供了很多的便利,而這邊文章主要講述stream的便利之一:對多個(gè)字段進(jìn)行排序

1、首先我們在數(shù)據(jù)庫中插入幾條樣例數(shù)據(jù)

要求:按照nick_name、address、age順序進(jìn)行排序

2、我們先用sql查詢的方式對數(shù)據(jù)進(jìn)行排序

3、通過stream流的方式進(jìn)行排序

代碼實(shí)現(xiàn):

  public Object selectList() {
        List<User> userList = userMapper.selectList(new QueryWrapper<>());
        Comparator<User>comparator =Comparator.comparing(User::getNickName)
                .thenComparing(User::getAddress)
                .thenComparing(User::getAge);
        userList = userList.stream().sorted(comparator).collect(Collectors.toList());
        return userList;
    }

結(jié)果展示:

[
    {
        "id": 2,
        "userName": "zhangsan",
        "nickName": "張三",
        "password": "123456",
        "address": "武漢",
        "phone": "18178523659",
        "sex": 1,
        "age": 42,
        "createTime": "2023-07-15 13:30:52"
    },
    {
        "id": 3,
        "userName": "zhangsan102",
        "nickName": "張三",
        "password": "123456",
        "address": "武漢",
        "phone": "15236985214",
        "sex": 1,
        "age": 57,
        "createTime": "2023-07-15 13:31:27"
    },
    {
        "id": 4,
        "userName": "zhangshan103",
        "nickName": "張三",
        "password": "123456",
        "address": "西安",
        "phone": "18956235841",
        "sex": 1,
        "age": 36,
        "createTime": "2023-07-15 13:32:28"
    },
    {
        "id": 1,
        "userName": "admin",
        "nickName": "超級管理員",
        "password": "123456",
        "address": "武漢",
        "phone": "15172378154",
        "sex": 1,
        "age": 30,
        "createTime": "2023-05-08 11:45:31"
    }
]

通過代碼我們可以知道通過stream的sorted()方法就可實(shí)現(xiàn)我們想要的結(jié)果,原理還是利用Comparator比較器對要排序的字段進(jìn)行比較,如果想倒序,則在比較器后面加上reversed(),該方法是對排序后的數(shù)據(jù)進(jìn)行一個(gè)反轉(zhuǎn)。

小結(jié):雖然對多個(gè)字段進(jìn)行排序有時(shí)候通過sql語句就能實(shí)現(xiàn),但有時(shí)候一些特殊場景導(dǎo)致不能使用sql排序的時(shí)候,stream就能派上用場了

總結(jié)

到此這篇關(guān)于Java中Stream流對多個(gè)字段進(jìn)行排序的文章就介紹到這了,更多相關(guān)Java Stream流多字段排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java 圖片驗(yàn)證碼的實(shí)現(xiàn)代碼

    java 圖片驗(yàn)證碼的實(shí)現(xiàn)代碼

    java 圖片驗(yàn)證碼的實(shí)現(xiàn)代碼,需要的朋友可以參考一下
    2013-05-05
  • SpringBoot解決Required?String?parameter?xxx?is?not?present問題

    SpringBoot解決Required?String?parameter?xxx?is?not?prese

    這篇文章主要介紹了SpringBoot解決Required?String?parameter?xxx?is?not?present問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java集成Redis構(gòu)建企業(yè)級的高可用分布式緩存系統(tǒng)

    Java集成Redis構(gòu)建企業(yè)級的高可用分布式緩存系統(tǒng)

    在當(dāng)今的互聯(lián)網(wǎng)應(yīng)用中,隨著用戶量和數(shù)據(jù)量的快速增長,系統(tǒng)性能和可用性面臨著巨大挑戰(zhàn),本文將深入探討如何在Java應(yīng)用中集成Redis,構(gòu)建企業(yè)級的分布式緩存解決方案,有需要的小伙伴可以了解下
    2025-09-09
  • Java如何實(shí)現(xiàn)長連接

    Java如何實(shí)現(xiàn)長連接

    這篇文章主要介紹了Java如何實(shí)現(xiàn)長連接,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-09-09
  • jmeter添加自定義擴(kuò)展函數(shù)之圖片base64編碼示例詳解

    jmeter添加自定義擴(kuò)展函數(shù)之圖片base64編碼示例詳解

    這篇文章主要介紹了jmeter添加自定義擴(kuò)展函數(shù)之圖片base64編碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • 分析Java中為什么String不可變

    分析Java中為什么String不可變

    Java中為什么String是不可變性的。今天我們從多角度解析為什么Java把String做成不可變的。
    2021-06-06
  • 使用maven編譯Java項(xiàng)目實(shí)例

    使用maven編譯Java項(xiàng)目實(shí)例

    這篇文章主要介紹了使用maven編譯Java項(xiàng)目實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下
    2019-06-06
  • Java使用dom4j解析XML

    Java使用dom4j解析XML

    dom4j是一個(gè)開源的、基于Java的XML解析庫,而在Java中使用dom4j庫解析XML是一種常見的方法,下面就跟隨小編一起來學(xué)習(xí)一下Java如何使用dom4j解析XML吧
    2024-12-12
  • java 實(shí)現(xiàn)最小二叉樹堆排序的實(shí)例

    java 實(shí)現(xiàn)最小二叉樹堆排序的實(shí)例

    這篇文章主要介紹了java 實(shí)現(xiàn)最小二叉樹堆排序的實(shí)例的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Java實(shí)現(xiàn)布隆過濾器的幾種方式總結(jié)

    Java實(shí)現(xiàn)布隆過濾器的幾種方式總結(jié)

    這篇文章給大家總結(jié)了幾種Java實(shí)現(xiàn)布隆過濾器的方式,手動(dòng)硬編碼實(shí)現(xiàn),引入Guava實(shí)現(xiàn),引入hutool實(shí)現(xiàn),通過redis實(shí)現(xiàn)等幾種方式,文中有詳細(xì)的代碼和圖解,需要的朋友可以參考下
    2023-07-07

最新評論

任丘市| 柞水县| 蒙阴县| 尚义县| 宽城| 禹城市| 梁河县| 甘德县| 包头市| 佛学| 吉首市| 拜城县| 三江| 河东区| 蓝田县| 合川市| 桐柏县| 德兴市| 青州市| 阿城市| 沁水县| 惠来县| 漯河市| 城步| 宣汉县| 如皋市| 富川| 沈丘县| 平安县| 宜城市| 日喀则市| 洞口县| 佛教| 台前县| 双江| 舞钢市| 宽城| 长春市| 茶陵县| 巴中市| 吴堡县|