【问题标题】:groovy: how to compare keys of two maps, and combine values for outputgroovy:如何比较两个地图的键,并组合输出的值
【发布时间】:2016-04-08 09:50:01
【问题描述】:

我正在尝试匹配两个单独映射的键(其中一个具有嵌套的值列表),如果键相同,则获取每个映射的值并将它们打印出来。

    Map 1 = [1210910348504950525757554952 : 40_b4_f0_a4_9d_80]

    Map 2 = [1210910348504950525757554952:[1, 23230967]

因此,我需要得到如下所示的输出:

    Map1Value.Map2(NestedValue1).Map2(NestedValue2)

    40_b4_f0_a4_9d_80.1.23230967

我想不出办法来做到这一点。

【问题讨论】:

    标签: java groovy hashmap key-value


    【解决方案1】:

    所以,我希望你只是有一个简单的例子,而且每张地图中实际上不仅仅是一个键。

    如果是这样的话,可能是这样的:

    Map map1 = [ 444: 'aaa', 555: 'bbb', 666: 'zzz' ]
    Map map2 = [ 444: [ 'cc', 'dd', 'ff' ], 666: ['111', '222'] ]
    
    map1.keySet().each { key ->
        List v2 = map2[key]
        if ( v2 ) {
           println (([map1[key]] + v2).join("."))
        }
    }
    

    或者更短一点的:

    map1.keySet().intersect( map2.keySet() ).each { key ->
       println (([map1[key]] + map2[key]).join("."))
    }
    

    它们都输出:

    aaa.cc.dd.ff
    zzz.111.222
    

    注意 555 键在第二张地图中不匹配,所以它没有输出。 请注意,我仅使用 map1 中的值创建一个列表,然后将 map2 中的值列表添加到其中,然后用句点将它们连接起来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 2017-07-04
      • 2013-09-26
      相关资源
      最近更新 更多