2010-04-08 21 views
5

मैं दो सूचियों है:ग्रोवी दो सूचियों को मिलाएं?

listA: 
[[Name: mr good, note: good,rating:9], [Name: mr bad, note: bad, rating:5]] 

listB: 
[[Name: mr good, note: good,score:77], [Name: mr bad, note: bad, score:12]] 

मैं इस एक

listC: 
[[Name: mr good, note: good,, rating:9, score:77], [Name: mr bad, note: bad, rating:5,score:12]] 

मैं इसे कैसे कर सकता है प्राप्त करना चाहते हैं?

धन्यवाद।

+1

क्या आप वाकई सूची में अच्छे के बाद दो कॉमा चाहते थे? – John

+0

आपकी सूचियों में तत्व कब समान मानते हैं? उदाहरण के लिए, समान नाम 'नाम' वाले तत्वों के साथ क्या होता है लेकिन अलग-अलग 'नोट'? – stefanglase

+0

listA और listB नक्शे हैं, सूचीबद्ध नहीं –

उत्तर

4

सूची ए में सभी तत्व एकत्रित करें, और elementA में तत्व ए समतुल्य को ढूंढें। इसे सूची बी से निकालें, और संयुक्त तत्व को वापस करें।

अगर हम मान लें कि आपका संरचना से ऊपर है, मैं शायद करना होगा:

def listC = listA.collect({ elementA -> 
    elementB = listB.find { it.Name == elementA.Name } 

    // Remove matched element from listB 
    listB.remove(elementB) 
    // if elementB == null, I use safe reference and elvis-operator 
    // This map is the next element in the collect 
    [ 
     Name: it.Name, 
     note: "${it.note} ${elementB?.note :? ''}", // Perhaps combine the two notes? 
     rating: it.rating?:0 + elementB?.rating ?: 0, // Perhaps add the ratings? 
     score: it.score?:0 + elementB?.score ?: 0 // Perhaps add the scores? 
    ] // Combine elementA + elementB anyway you like 
} 

// Take unmatched elements in listB and add them to listC 
listC += listB 
+0

भले ही मैं ओपी क्या कर रहा हूं ठीक से करने की कोशिश नहीं कर रहा हूं, इससे मुझे मदद मिली! धन्यवाद! – djule5

0

सवाल का विषय कुछ हद तक सामान्य है, इसलिए मैं, एक सरल सवाल का जवाब पोस्ट करेंगे अगर कोई यहाँ मिल गया के लिए देख "ग्रोवी में एक मानचित्र में दो सूचियों को कैसे विलय करें?"

def keys = "key1\nkey2\nkey3" 
def values = "value1,value2,value3" 
keys = keys.split("\n") 
values = values.split(",") 
def map = [:] 
keys.eachWithIndex() {param,i -> map[keys[i]] = values[i] } 
print map 
संबंधित मुद्दे