成人免费观看在线视频高清中文_亚洲黄在免一区二区不卡无码_亚洲大尺码专区在线观看_韩国精品福利一区二区看

好運物流網(wǎng)-全國領(lǐng)先的物流網(wǎng)   好運物流網(wǎng)-登錄  好運物流網(wǎng)-免費注冊 進入我的后臺 首頁 | 發(fā)布信息 | 服務(wù)項目 | 物流百科
物流查詢|物流公司|中國物流信息網(wǎng)-好運物流網(wǎng)
 
你正在查看的信息:資訊首頁->資訊頻道->IT編程技術(shù)->正文

list.stream().collect Collectors.groupingBy分組后的排序問題,實現(xiàn)輸出json分組排序

更新時間:2021/9/1 14:38    出處:互聯(lián)網(wǎng)
已經(jīng)瀏覽
5233
默認(rèn)groupingBy代碼里會生成一個HashMap(hashMap是無序的,put的順序與get的順序不一致)

HashMap是無序的,HashMap在put的時候是根據(jù)key的hashcode進行hash然后放入對應(yīng)的地方。所以在按照一定順序put進HashMap中,然后遍歷出HashMap的順序跟put的順序不同(除非在put的時候key已經(jīng)按照hashcode排序號了,這種幾率非常。
單純的HashMap是無法實現(xiàn)排序的,這的排序是指,我們將鍵值對按照一定的順序put進HashMap里,然后在進行取鍵值對的操作的時候,是按照put進去的順序把鍵值對取出來的。
JAVA在JDK1.4以后提供了LinkedHashMap來幫助我們實現(xiàn)了有序的HashMap!LinkedHashMap取鍵值對時,是按照你放入的順序來取的。


這就造成了一個List<Model>如果是有序的,在 groupingBy后 model的順序是不可控的.


現(xiàn)在遇到這樣一個場景

在CMS里,每個頁面的模塊是按順序排放的,每個模塊的內(nèi)容也是按順序的如 

List<Model> list=Arrays.asList(m1,m2,m3)

現(xiàn)在需要對里面的元素分組,但是分組后的順序也必須是 m1,m2,m3...中間可以缺少,但是不能亂序

以下是合法的 m1,m3  或者  m2,m3 但是不能 m3,m2

如以下代碼 list的順序是  id=2的在 id=1之前, 分組之后的訪問也必須是id=2的在前才對

但是如果調(diào)用 默認(rèn)的分組,就會發(fā)現(xiàn) id=1的在前了 (在后的將要在前;在前的將要在后了)


輸出總是

1

[A12,A11]

2

[A2,A21]

但是期望輸出為

2 [A21,A2]    1 [A12,A11]

如果需要保持排序就不能使用默認(rèn)的 方法了,必須使用 被注釋的方法 (明確使用LinkedHashMap來保持順序).

下面是groupingBy的參數(shù)說明

可以看到有三個參數(shù),第一個參數(shù)就是key的Function了,第二個參數(shù)是一個map工廠,也就是最終結(jié)果的容器,一般默認(rèn)的是采用的HashMap::new,最后一個參數(shù)很重要是一個downstream,類型是Collector,也是一個收集器,那就是說,這三個參數(shù)其實就是為了解決分組問題的

第一個參數(shù):分組按照什么分類

第二個參數(shù):分組最后用什么容器保存返回

第三個參數(shù):按照第一個參數(shù)分類后,對應(yīng)的分類的結(jié)果如何收集

 
其實一個參數(shù)的Collectors.groupingBy方法的 ,第二個參數(shù)默認(rèn)是HashMap::new, 第三個參數(shù)收集器其實默認(rèn)是Collectors.toList

案例:list.stream().collect(Collectors.groupingBy(類::字段名, LinkedHashMap::new, Collectors.toList()));
還可以看看其他文章,謝謝您的閱讀。
網(wǎng)站申明:系本文編輯轉(zhuǎn)載,來源于網(wǎng)絡(luò),目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點和對其真實性負(fù)責(zé),所有權(quán)歸屬原作者。如內(nèi)容、圖片有任何版權(quán)問題,請聯(lián)系我們刪除。
上一篇:mysql取JSON數(shù)據(jù)查詢語句怎么寫?mysql如何查詢JSON字段數(shù)據(jù)?mysql提取json語句方法 下一篇:java各種對象類型的互相轉(zhuǎn)換,json、map、字符串、對象、array之間的轉(zhuǎn)換
更多相關(guān)的物流文章
IT編程技術(shù)  互聯(lián)網(wǎng)  2023-10-07  瀏覽:9148次
IT編程技術(shù)  互聯(lián)網(wǎng)  2022-11-24  瀏覽:12219次
IT編程技術(shù)  互聯(lián)網(wǎng)  2022-11-17  瀏覽:12899次
IT編程技術(shù)  互聯(lián)網(wǎng)  2022-11-17  瀏覽:12211次
IT編程技術(shù)  互聯(lián)網(wǎng)  2022-11-14  瀏覽:12252次
IT編程技術(shù)  互聯(lián)網(wǎng)  2022-11-06  瀏覽:12583次
IT編程技術(shù)  互聯(lián)網(wǎng)  2022-11-05  瀏覽:12103次
IT編程技術(shù)  互聯(lián)網(wǎng)  2022-11-05  瀏覽:11695次
IT編程技術(shù)  互聯(lián)網(wǎng)  2022-10-28  瀏覽:13521次
正在被瀏覽的文章
【IT編程技術(shù)】熱點文章
“掃一掃”微信公眾號
好運物流網(wǎng)公眾號二維碼
關(guān)于好運物流網(wǎng) - 聯(lián)系好運網(wǎng) - 物流公司查詢 - 物流知道 - 幫助中心 - 網(wǎng)站地圖
溫馨提示:防范支招 安全警示:貨運合作要有安全意識,需當(dāng)面核實對方真實身份,要簽訂合同/協(xié)議、提供身份證等(防范支招)
免責(zé)聲明:本站只起到物流信息平臺作用,內(nèi)容的準(zhǔn)確性以及物流過程中出現(xiàn)的任何風(fēng)險均由發(fā)布者負(fù)責(zé),與平臺無關(guān)。
好運物流網(wǎng)(haoyun56.com)  備案號:浙ICP備10210792號-4

浙公網(wǎng)安備 33080202000006號