记录使用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