2016-04-08 7 views
1

2つの別々のマップのキーを一致させようとしています(そのうちの1つは値のネストされたリストを持っています)。各マップの値を表示してそれらを印刷します。groovy:2つのマップのキーを比較し、出力の値を結合する方法

Map1Value.Map2(NestedValue1).Map2(NestedValue2) 

    40_b4_f0_a4_9d_80.1.23230967 

私はこれを行う方法を把握することはできません。

Map 1 = [1210910348504950525757554952 : 40_b4_f0_a4_9d_80] 

    Map 2 = [1210910348504950525757554952:[1, 23230967] 

は結果として、私は次のようになります出力を取得する必要があります。

答えて

3

私はあなたに単純な例があることを望んでおり、各地図には本当に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 2番目のマップでキーが一致しなかったため、出力されませんでした。 注map1の値だけからリストを作成し、map2の値のリストをそのリストに追加してからピリオドで結合します。

関連する問題