स्कैला में दो फ़ील्ड द्वारा सूची को सॉर्ट करने का तरीका, इस उदाहरण में मैं अंतिम नाम और प्रथम नाम से सॉर्ट करूंगा?स्कैला में दो फ़ील्ड द्वारा सूची कैसे क्रमबद्ध करें?
case class Row(var firstName: String, var lastName: String, var city: String)
var rows = List(new Row("Oscar", "Wilde", "London"),
new Row("Otto", "Swift", "Berlin"),
new Row("Carl", "Swift", "Paris"),
new Row("Hans", "Swift", "Dublin"),
new Row("Hugo", "Swift", "Sligo"))
rows.sortBy(_.lastName)
मैं इस
rows.sortBy(_.lastName + _.firstName)
जैसी चीजों की कोशिश, लेकिन यह काम नहीं करता। तो मैं एक अच्छे और आसान समाधान के लिए उत्सुक हो।
क्या होगा यदि हम अंतिम नाम पर क्रमबद्ध करना चाहते हैं और फिर पहले नाम पर प्राकृतिक प्रकार चाहते हैं? –
@SachinK: आपको 'पंक्ति' वर्ग के लिए अपना स्वयं का 'ऑर्डरिंग' बनाना होगा और इसे 'क्रमबद्ध' विधि के साथ उपयोग करना होगा: 'rows.sorted (customOrdering)'। आप 'tuple2' के लिए कस्टम 'ऑर्डरिंग' का भी उपयोग कर सकते हैं:' rows.sortBy (r => (r.lastName, r.firstName)) (ऑर्डरिंग .uple2 (ऑर्डरिंग। स्ट्रिंग.वर्स, ऑर्डरिंग। स्ट्रिंग)) ' । – senia
@SachinK: आप 'customOrdering' को मैन्युअल रूप से 'ऑर्डरिंग [पंक्ति]' के रूप में लागू कर सकते हैं या इस तरह 'ऑर्डरिंग.बी'' का उपयोग कर सकते हैं:' val customOrdering = 'Ordering.by ((r: पंक्ति) => (r.lastName, r । फर्स्टनाम)) (ऑर्डरिंग .uple2 (ऑर्डरिंग। स्ट्रिंग.वर्स, ऑर्डरिंग। स्ट्रिंग)) ' – senia