如何合并两个具有相同键的嵌套映射并保留值

6

我有以下地图:

Map<String,Map<String,Long>> mapOne;
Map<String,Map<String,Long>> mapTwo;

这些地图中的值看起来像这样:
{
     BMW = {
        SIZE=1, 
        SPEED=60
    }, 
     AUDI = {
        SIZE=5, 
        SPEED=21
    },
     SEAT= {
        SPEED=15
     }
}

第二张地图:
 {
         Suzuki = {
            WHEELS_SIZE=2, 
            DOORS=3
        }, 
         AUDI = {
            WHEELS_SIZE=5, 
            DOORS=5
        },
         SEAT= {
            DOORS=4
         }
    }

我希望合并后的地图是这样的:
{
         BMW = {
            SIZE=1, 
            SPEED=60
        }, 
         AUDI = {
            SIZE=5, 
            SPEED=21,
            WHEELS_SIZE=5, 
            DOORS=5
        },
         SEAT= {
            SPEED=15,
            DOORS=4
         },
         Suzuki = {
            WHEELS_SIZE=2, 
            DOORS=3
        }, 
    }

我想进行合并,并且将重复键的值进行组合。我认为应该像这样:

mapTwo.forEach((k, v) -> mapOne.merge(k, v, ..... ));
1个回答

4

您可以编写:

mapTwo.forEach((k, v) -> mapOne.merge(k, v, (v1,v2) -> {
                                                          v1.putAll(v2);
                                                          return v1;
                                                       }));

这将修改 mapOne,以包括mapTwo的条目,并合并相同键的内部 Map


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接