欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決java.lang.IllegalStateException:Duplicate key異常問題

 更新時間:2025年03月08日 10:25:56   作者:早起的年輕人  
java.lang.IllegalStateException:Duplicatekey異常在將List轉(zhuǎn)換為Map時出現(xiàn),解決方法是使用toMap()的重載方法,如果已經(jīng)存在則不再修改,直接使用上一個數(shù)據(jù)

java.lang.IllegalStateException:Duplicate key異常

使用場景

在實際應(yīng)用開發(fā)中,會常把一個List的查詢數(shù)據(jù)集合轉(zhuǎn)為一個Map,那么在這里的 list.stream().collect()其實就是做了這么一件事情,它是java8的stream方式實現(xiàn)的它是以type為key,以entity對象為value構(gòu)成Map。

    //查詢
    List<QuestionCategoryEntity> list = questionCategoryService.selectList(entityWrapper);
    
    Map<String, String> categoryMap = list.stream().collect(
        Collectors.toMap(
            QuestionCategoryEntity::getCategoryCode,
            QuestionCategoryEntity::getCategoryName
        )
    );

在有些業(yè)務(wù)場景中會出現(xiàn)如下異常:Duplicate key ,map的key重復(fù),如上的 QuestionCategoryEntity::getCategoryCode。

java.lang.IllegalStateException: Duplicate key 專項考試
    at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133)
    at java.util.HashMap.merge(HashMap.java:1245)
    at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320)
    at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
... ...

解決方法

使用toMap()的重載方法,如果已經(jīng)存在則不再修改,直接使用上一個數(shù)據(jù)。

    //查詢
    List<QuestionCategoryEntity> list = questionCategoryService.selectList(entityWrapper);
    
    Map<String, String> categoryMap = list.stream().collect(
        Collectors.toMap(
            QuestionCategoryEntity::getCategoryCode,
            QuestionCategoryEntity::getCategoryName,
            (entity1, entity2) -> entity1
        )
    );

等效于

questionCategoryService.selectList(entityWrapper);
    
    Map<String, String> categoryMap = list.stream().collect(
        Collectors.toMap(
            QuestionCategoryEntity::getCategoryCode,
            QuestionCategoryEntity::getCategoryName,
            (entity1, entity2) {
            	return entity1
            }
        )
    );

(entity1, entity2) -> entity1 這里使用的箭頭函數(shù),也就是說當(dāng)出現(xiàn)了重復(fù)key的數(shù)據(jù)時,會回調(diào)這個方法,可以在這個方法里處理重復(fù)Key數(shù)據(jù)問題,小編這里粗暴點,直接使用了上一個數(shù)據(jù)。

總結(jié)

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

相關(guān)文章

  • springboot中通過jwt令牌校驗及前端token請求頭進(jìn)行登錄攔截實戰(zhàn)記錄

    springboot中通過jwt令牌校驗及前端token請求頭進(jìn)行登錄攔截實戰(zhàn)記錄

    這篇文章主要給大家介紹了關(guān)于springboot中如何通過jwt令牌校驗及前端token請求頭進(jìn)行登錄攔截的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • Java如何獲取當(dāng)前年份、月份和日期字符串

    Java如何獲取當(dāng)前年份、月份和日期字符串

    Java獲取當(dāng)前年份、月份和日期是通過Calendar類的實例對象來獲取的,本文通過實例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • Spring中的@PostConstruct注解使用方法解析

    Spring中的@PostConstruct注解使用方法解析

    這篇文章主要介紹了Spring中的@PostConstruct注解使用方法解析,@PostConstruct注解是用來處理在@Autowired注入屬性后init()方法之前,對一些零散的屬性進(jìn)行賦值的注解,需要的朋友可以參考下
    2023-11-11
  • 快速學(xué)會Dubbo的配置環(huán)境及相關(guān)配置

    快速學(xué)會Dubbo的配置環(huán)境及相關(guān)配置

    本文主要講解Dubbo的環(huán)境與配置,文中運用大量代碼和圖片講解的非常詳細(xì),需要學(xué)習(xí)或用到相關(guān)知識的小伙伴可以參考這篇文章
    2021-09-09
  • Mybatis-plus新版本分頁失效PaginationInterceptor過時的問題

    Mybatis-plus新版本分頁失效PaginationInterceptor過時的問題

    這篇文章主要介紹了Mybatis-plus新版本分頁失效,PaginationInterceptor過時問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 解析java中This的用法分析

    解析java中This的用法分析

    本篇文章是對java中This的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Java獲取月份的三種方法總結(jié)

    Java獲取月份的三種方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java獲取月份的三種方法,文中分別介紹了使用java.util.Date、java.util.Calendar和java.time包中的LocalDate類,推薦使用java.time包中的LocalDate,因為它提供了更為簡潔和強大的功能,需要的朋友可以參考下
    2024-12-12
  • Spring?Boot項目抵御XSS攻擊實戰(zhàn)過程

    Spring?Boot項目抵御XSS攻擊實戰(zhàn)過程

    XSS攻擊又稱跨站腳本攻擊,通常指利用網(wǎng)頁開發(fā)時留下的漏洞,通過巧妙的方法注入惡意指令代碼到網(wǎng)頁,使用戶加載并執(zhí)行攻擊者惡意制造的網(wǎng)頁程序,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot項目抵御XSS攻擊的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Java文件讀寫IO/NIO及性能比較詳細(xì)代碼及總結(jié)

    Java文件讀寫IO/NIO及性能比較詳細(xì)代碼及總結(jié)

    這篇文章主要介紹了Java文件讀寫IO/NIO及性能比較詳細(xì)代碼及總結(jié),具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • java清除html轉(zhuǎn)義字符

    java清除html轉(zhuǎn)義字符

    這篇文章主要介紹了一個靜態(tài)文件處理的一些便捷服務(wù),包括 java清除html轉(zhuǎn)義字符,清除html代碼,從style樣式中讀取CSS的屬性,將字符串截取指定長度,涉及l(fā)og4j,common-lang類的學(xué)習(xí)
    2014-01-01

最新評論