Java中Stream流對多個(gè)字段進(jìn)行排序的方法
前言
談起Java 8,不少熟悉它的人,都會知道有一個(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)文章
如何通過XML方式配置并實(shí)現(xiàn)Mybatis
這篇文章主要介紹了如何通過XML方式配置并實(shí)現(xiàn)Mybatis,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11關(guān)于SpringBoot攔截器攔截靜態(tài)資源的問題
這篇文章主要介紹了關(guān)于SpringBoot攔截器攔截靜態(tài)資源的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Java前后端的JSON傳輸方式(前后端JSON格式轉(zhuǎn)換)
這篇文章主要介紹了Java前后端的JSON傳輸方式(前后端JSON格式轉(zhuǎn)換),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04