2016-04-08 6 views
1

Ich versuche, die Schlüssel von zwei verschiedenen Karten (von denen eine eine verschachtelte Liste von Werten hat) zu vergleichen, und wenn die Schlüssel identisch sind, nehmen Sie die Werte jeder Karte und drucken sie aus.groovy: wie man Schlüssel von zwei Karten vergleicht, und Werte für die Ausgabe kombiniert

Map 1 = [1210910348504950525757554952 : 40_b4_f0_a4_9d_80] 

    Map 2 = [1210910348504950525757554952:[1, 23230967] 

Als Ergebnis muss ich eine Ausgabe erhalten, die etwa wie folgt aussieht:

Map1Value.Map2(NestedValue1).Map2(NestedValue2) 

    40_b4_f0_a4_9d_80.1.23230967 

Ich kann nicht einen Weg finden, dies zu tun.

Antwort

3

Also ich hoffe, Sie haben nur ein einfaches Beispiel, und es gibt wirklich mehr als nur den einen Schlüssel in jeder der Karten.

Wenn das der Fall ist, vielleicht so etwas wie:

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(".")) 
    } 
} 

oder etwas ein wenig kürzer sogar:

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

beide Ausgabe:

aaa.cc.dd.ff 
zzz.111.222 

Beachten Sie, dass die 555 Schlüssel stimmt in der 2. Map nicht überein, daher wurde nicht ausgegeben. Hinweis: Ich erstelle eine Liste nur aus dem Wert von map1, füge dann die Liste der Werte aus map2 hinzu und verknüpfe sie mit Punkten.

Verwandte Themen