2012-04-12 16 views
5

मैं ग्रोवी में एक नक्शा सॉर्ट करने की कोशिश कर रहा हूं जिसमें मानचित्र के मूल्य हैं। मैं मानचित्र पर पुन: प्रयास करना चाहता हूं और अंतिम नाम और प्रथम नाम मानों द्वारा क्रमबद्ध मानों को मुद्रित करना चाहता हूं। तो निम्न उदाहरण में:मूल्य के आधार पर मानचित्रों को छंटनी

def m = 
[1:[firstName:'John', lastName:'Smith', email:'[email protected]'], 
2:[firstName:'Amy', lastName:'Madigan', email:'[email protected]'], 
3:[firstName:'Lucy', lastName:'B',  email:'[email protected]'], 
4:[firstName:'Ella', lastName:'B',  email:'[email protected]'], 
5:[firstName:'Pete', lastName:'Dog', email:'[email protected]']] 

वांछित परिणाम होगा:

[firstName:'Ella', lastName:'B',  email:'[email protected]'] 
[firstName:'Lucy', lastName:'B',  email:'[email protected]'] 
[firstName:'Pete', lastName:'Dog', email:'[email protected]'] 
[firstName:'Amy', lastName:'Madigan', email:'[email protected]'] 
[firstName:'John', lastName:'Smith', email:'[email protected]'] 

मैं कोशिश की है m.sort {it.value.lastName & & it.value.firstName} और मीटर। सॉर्ट करें {[it.value.lastName, it.value.firstName]}। M.sort {it.value.lastName} द्वारा सॉर्ट करना काम करता है लेकिन पहले नाम से सॉर्ट नहीं करता है।

क्या कोई इस के साथ मदद कर सकता है, बहुत सराहना की, धन्यवाद!

+0

मुझे लगता है कि यह [इस अन्य प्रश्न] का डुप्लिकेट है (http://stackoverflow.com/q/9559309/581845)। क्या हम उन्हें डुप्लीकेट के रूप में चिह्नित कर सकते हैं और शायद उन्हें अधिक सामान्य और वर्णनात्मक शीर्षक के तहत मर्ज कर सकते हैं? – epidemian

उत्तर

4

यह करना चाहिए:

m.values().sort { a, b -> 
    a.lastName <=> b.lastName ?: a.firstName <=> b.firstName 
} 
+0

बिल्कुल सही, धन्यवाद। एक चैंप की तरह काम किया! –

संबंधित मुद्दे