热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

你能帮我合并几张地图的价值吗?

如何解决《你能帮我合并几张地图的价值吗?》经验,为你挑选了1个好方法。

我正在尝试进行以下修改:

final Map>> scopes = scopeService.fetchAndCacheScopesDetails();
final Map> scopesRespOnse= scopes.entrySet().stream().collect
        (Collectors.toMap(Map.Entry::getKey, e -> e.getValue()
                .stream().collect(Collectors.toMap(s -> (String) s.get(SCOPE_NM), s -> (String) s.get(SCOPE_ID))))
        );

但我面临"Duplicate key"错误,所以我想scopeResponses改为Map>>

你能告诉我如何将值合并s -> (String) s.get(SCOPE_ID)到一个ListSet在这种情况下?



1> Eran..:

您需要为Setinner的值创建一个Map,并提供合并函数:

final Map>> scopesRespOnse= scopes.entrySet().stream().collect
    (Collectors.toMap(Map.Entry::getKey, e -> e.getValue()
            .stream().collect(Collectors.toMap(s -> s.get(SCOPE_NM),
                                               s -> {Set set= new HashSet<>(); set.add(s.get(SCOPE_ID)); return set;},
                                               (s1,s2)->{s1.addAll(s2);return s1;}))));

或者,你可以构造内MapgroupingBy:

final Map>> scopesResponse2 = scopes.entrySet().stream().collect
    (Collectors.toMap(Map.Entry::getKey, e -> e.getValue()
            .stream().collect(Collectors.groupingBy(s -> s.get(SCOPE_NM),
                                               Collectors.mapping(s -> s.get(SCOPE_ID),Collectors.toSet())))));


推荐阅读
author-avatar
mobiledu2502905463
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有