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

java8 toMap問(wèn)題(key重復(fù)如何解決)

 更新時(shí)間:2022年05月06日 10:01:02   作者:爪哇c  
這篇文章主要介紹了java8 toMap問(wèn)題(key重復(fù)如何解決),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

java8 toMap(key重復(fù)解決)

使用stream的toMap()函數(shù)時(shí),當(dāng)key重復(fù),系統(tǒng)會(huì)報(bào)錯(cuò)相同的key不能形成一個(gè)map,那么需要解決這個(gè)問(wèn)題

  • 相同key的情況下,丟棄重復(fù)的只保留一個(gè)
  • 相同key的情況下,把value變成list,形成Map(Object,List<Object>)的形式

1.當(dāng)key重復(fù),使用最后一個(gè)value為值

2.當(dāng)key重復(fù),使用list收集

Collectors.toMap的key重復(fù)

Map<String, BottomAccount> map = bottomAccountList.stream().collect(Collectors.toMap(BottomAccount::getGoodName, Function.identity()));

如這個(gè)地方,如果使用GoodName為map的key,貨物名稱有可能會(huì)重復(fù),這時(shí)候就會(huì)報(bào)Duplicate Key的問(wèn)題,其實(shí)是map的key重復(fù)了,首先查看源碼:

1.png

顯而易見(jiàn),throwingMerger()是一個(gè)出現(xiàn)異常時(shí)默認(rèn)執(zhí)行的方法,可以看到,入?yún)⑹荋ashMap,大膽猜測(cè)、小心求證,我們猜最終是由HashMap去執(zhí)行的Merger方法,

2.png

看HashMap里的一段代碼:

3.png

這就能證明當(dāng)出現(xiàn)map的key重復(fù)時(shí)會(huì)報(bào)錯(cuò)Duplicate Key的異常了。

如果不想拋異常,自己給傳一個(gè)新的key值用于替換原有值。

所以,

解決方案一

給重復(fù)的Key設(shè)置一個(gè)新的值

Map<Integer, String> map = list.stream().collect(Collectors.toMap(Person::getId, Person::getName,(oldValue, newValue) -> newValue));

但是考慮到實(shí)際業(yè)務(wù)中,給重復(fù)的key設(shè)置一個(gè)新的值并不符合需求,所以,

解決方案二

使用其他字段為map的key,如主鍵id

Map<String, BottomAccount> map = bottomAccountList.stream().collect(Collectors.toMap(BottomAccount::getId, Function.identity()));

原來(lái)的map中的key就變成了value

map.values().stream().map(BottomAccount::getGoodName).collect(Collectors.toList())

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

相關(guān)文章

  • java接口私有方法實(shí)現(xiàn)過(guò)程解析

    java接口私有方法實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了java接口私有方法實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java 策略模式與模板方法模式相關(guān)總結(jié)

    Java 策略模式與模板方法模式相關(guān)總結(jié)

    這篇文章主要介紹了Java 策略模式與模板方法模式相關(guān)總結(jié),幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-01-01
  • Java對(duì)象數(shù)組的添加、刪除和遍歷代碼示例

    Java對(duì)象數(shù)組的添加、刪除和遍歷代碼示例

    在Java編程中,我們經(jīng)常需要對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行遍歷操作,并根據(jù)業(yè)務(wù)需求刪除部分元素,這篇文章主要給大家介紹了關(guān)于Java對(duì)象數(shù)組的添加、刪除和遍歷的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • Java emoji持久化mysql過(guò)程詳解

    Java emoji持久化mysql過(guò)程詳解

    這篇文章主要介紹了Java emoji持久化mysql過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Spring Boot與ActiveMQ整合的步驟

    Spring Boot與ActiveMQ整合的步驟

    今天小編就為大家分享一篇關(guān)于Spring Boot與ActiveMQ整合的步驟,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • 如何導(dǎo)入spring源碼到IDEA

    如何導(dǎo)入spring源碼到IDEA

    這篇文章主要介紹了如何導(dǎo)入spring源碼到IDEA,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • SpringBoot+netty-socketio實(shí)現(xiàn)服務(wù)器端消息推送

    SpringBoot+netty-socketio實(shí)現(xiàn)服務(wù)器端消息推送

    這篇文章主要介紹了SpringBoot+netty-socketio實(shí)現(xiàn)服務(wù)器端消息推送,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • eclipse自動(dòng)創(chuàng)建SpringBoot項(xiàng)目報(bào)錯(cuò)的解決

    eclipse自動(dòng)創(chuàng)建SpringBoot項(xiàng)目報(bào)錯(cuò)的解決

    這篇文章主要介紹了eclipse自動(dòng)創(chuàng)建SpringBoot項(xiàng)目報(bào)錯(cuò)的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java?System#exit無(wú)法退出程序的問(wèn)題及解決

    Java?System#exit無(wú)法退出程序的問(wèn)題及解決

    這篇文章主要介紹了Java?System#exit無(wú)法退出程序的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • SpringBoot中的server.context-path的實(shí)現(xiàn)

    SpringBoot中的server.context-path的實(shí)現(xiàn)

    本文主要介紹了SpringBoot中的server.context-path的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08

最新評(píng)論

沁水县| 郧西县| 凤阳县| 阜宁县| 宣威市| 彰化县| 阿荣旗| 阿巴嘎旗| 凤阳县| 邳州市| 太谷县| 同仁县| 古浪县| 甘泉县| 永登县| 武隆县| 宁化县| 麻阳| 北川| 荣昌县| 聊城市| 双辽市| 大英县| 白城市| 凤山县| 仙游县| 体育| 小金县| 卫辉市| 玉溪市| 北川| 阿拉善右旗| 舞阳县| 玉树县| 南康市| 刚察县| 庐江县| 门源| 乌拉特后旗| 清远市| 娱乐|