小编dro*_*ear的帖子

映射与泛型的递归合并

我正在尝试构建一种方法来合并两个地图的内容。我在这里环顾了一段时间,找不到一种方法来使这个通用。@SuppressWarnings("unchecked")如果可能的话,我想避免使用注释。我有一个嵌套的映射结构,其中键是字符串,值是更多内容的映射,该结构中的“叶”节点始终被设置。所以在大多数情况下,我有两个结构如下的地图:

Map<String,Map<String,Set<String>>>
Run Code Online (Sandbox Code Playgroud)

我想要合并两个映射,以便最终得到两个映射的并集,并且这两个映射中的任何公共键都在结果映射中表示,其值是两个映射中的两个值的合并。在代码中,这是我迄今为止所拥有的:

@SuppressWarnings("unchecked")
public Map<String,Object> merge(final Map<String, Object> map1,
                                final Map<String, Object> map2) {

    final Map<String,Object> merged = new HashMap<String,Object>(map1);
    for (final Map.Entry<String,Object> entry : merged.entrySet()) {
        final String key = entry.getKey();
        final Object value = entry.getValue();
        if (map2.containsKey(key)) {
            final Object value2 = map2.get(key);
            if ((value instanceof Map) && (value2 instanceof Map)) {
                merged.put(key, merge((Map<String, Object>) value, (Map<String, Object>) value2));
            } else if ((value instanceof Set) && (value2 instanceof Set)) {
                final Set<Object> set = new …
Run Code Online (Sandbox Code Playgroud)

java generics recursion

4
推荐指数
1
解决办法
2491
查看次数

标签 统计

generics ×1

java ×1

recursion ×1