加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

按值对地图内的地图进行排序

发布时间: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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读