記錄使用Stream轉多層map數據結構及遇到的坑


首先是List轉Map<key,value>數據結構:

Map<String, Integer> result =
                    cloudStoreUserSearchInfoList.stream()
                            .collect(Collectors.toMap(CloudStoreUserSearchInfo::getSearchKey,
                                            cloudStoreUserSearchInfo -> cloudStoreUserSearchInfo.getSearchType()));

這里會有個小坑,當你的key相同時,會拋出一個 java.lang.IllegalStateException: Duplicate key 

解決辦法,傳入處理處理機制,當相同的key時,選擇一個

            Map<String, Integer> result =
                    cloudStoreUserSearchInfoList.stream()
                            .collect(Collectors.toMap(CloudStoreUserSearchInfo::getSearchKey,
                                    cloudStoreUserSearchInfo -> cloudStoreUserSearchInfo.getSearchType(), (key1, key2) -> key1));

 

List轉Map<key,Map<key,vaule>>數據結構:

Map<String, Map<String, Integer>> result =
                    cloudStoreUserSearchInfoList.stream()
                            .collect(Collectors.groupingBy(CloudStoreUserSearchInfo::getId,
                                    Collectors.toMap(CloudStoreUserSearchInfo::getSearchKey,
                                            cloudStoreUserSearchInfo -> cloudStoreUserSearchInfo.getSearchType())));

三層四層Map以此類推就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM