按值对地图内的地图进行排序
发布时间:2020-12-14 16:28:16 所属栏目:大数据 来源:网络整理
导读:我正在尝试在Groovy中对映射作为值进行排序.我想迭代地图并打印出由lastName和firstName值排序的值.所以在下面的例子中: def m = [1:[firstName:'John',lastName:'Smith',email:'john@john.com'],2:[firstName:'Amy',lastName:'Madigan',email:'amy@amy.com
我正在尝试在Groovy中对映射作为值进行排序.我想迭代地图并打印出由lastName和firstName值排序的值.所以在下面的例子中:
def m = [1:[firstName:'John',lastName:'Smith',email:'john@john.com'],2:[firstName:'Amy',lastName:'Madigan',email:'amy@amy.com'],3:[firstName:'Lucy',lastName:'B',email:'lucy@lucy.com'],4:[firstName:'Ella',email:'ella@ella.com'],5:[firstName:'Pete',lastName:'Dog',email:'pete@dog.com']] 期望的结果将是: [firstName:'Ella',email:'ella@ella.com'] [firstName:'Lucy',email:'lucy@lucy.com'] [firstName:'Pete',email:'pete@dog.com'] [firstName:'Amy',email:'amy@amy.com'] [firstName:'John',email:'john@john.com'] 我已经尝试了m.sort {it.value.lastName&& it.value.firstName}和m.sort {[it.value.lastName,it.value.firstName]}.按m.sort {it.value.lastName}排序有效,但不按firstName排序. 能有人帮忙,非常感谢,谢谢! 解决方法
这应该这样做:
m.values().sort { a,b -> a.lastName <=> b.lastName ?: a.firstName <=> b.firstName } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |