首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将集合作为值来获得TreeMaps的并集?

如何将集合作为值来获得TreeMaps的并集?
EN

Stack Overflow用户
提问于 2018-04-24 11:23:51
回答 1查看 216关注 0票数 1

我有几个临时的TreeMaps,我想合并成一个超级TreeMap,一个联盟的较小的TreeMaps。

TreeMaps的泛型类型是

代码语言:javascript
复制
TreeMap<String, Set<Integer>>

当我试着打电话给

代码语言:javascript
复制
SuperTreeMap.addALL(temp)

我收到以下错误

代码语言:javascript
复制
Error: cannot find symbol.
EN

回答 1

Stack Overflow用户

发布于 2018-04-24 12:34:59

您不能将所有的值作为值与putAll结合使用。每个新的Set将替换现有的一个。你必须做很多事情:

代码语言:javascript
复制
Map<String, Set<Integer>> map = new TreeMap<>();
Map<String, Set<Integer>> map1 = new TreeMap<>();
Map<String, Set<Integer>> map2 = new TreeMap<>();

map1.put("one", new HashSet<>());
map1.get("one").add(1);
map1.get("one").add(2);
map1.get("one").add(3);

map1.put("two", new HashSet<>());
map1.get("two").add(1);
map1.get("two").add(2);
map1.get("two").add(3);

map2.put("one", new HashSet<>());
map2.get("one").add(4);
map2.get("one").add(5);
map2.get("one").add(6);

map2.put("two", new HashSet<>());
map2.get("two").add(4);
map2.get("two").add(5);
map2.get("two").add(6);

for (Map<String, Set<Integer>> m : Arrays.asList(map1, map2)) {
    for (Map.Entry<String, Set<Integer>> entry : m.entrySet()) {
        if (!map.containsKey(entry.getKey()))
            map.put(entry.getKey(), new HashSet<>());
        map.get(entry.getKey()).addAll(entry.getValue());
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49992960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档