• 记录使用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以此类推就可以了。

  • 相关阅读:
    C++中的静态数据成员的作用与好处
    C++中的虚函数表
    CF292-D
    CF292-C
    CF292-B
    CF292-A
    CF291-B
    CF291-C
    CF287-B
    CF287-C
  • 原文地址:https://www.cnblogs.com/codecodeandcode/p/12893573.html
Copyright © 2020-2023  润新知