groovy list 根据双重条件排序

groovy语言有sort()方法可以对list进行排序,如

def list = [1, 3, 5 ,6, 2, 4, 3, 2]

println list.sort()
将输出
[1, 2, 2, 3, 3, 4, 5, 6]

这是最简单的排序,如果是英文,则会按照字母顺序进行排列。有时需要一些更为复杂的排序,如:

def employees = [
        [id: 1, lv: 2, seniority: 3],
	[id: 2, lv: 1, seniority: 2],
	[id: 3, lv: 2, seniority: 2]
]
现要求把员工信息先按等级、等级相同再按工龄排序,即类似把上述数据看成数据库一张表,查询语句为:
select * from employees order by lv, seniority
这时需要通过闭包来根据条件排序
employees.sort { a, b-> 
	a.lv < b.lv ? -1: a.seniority < b.seniority ? 0 : 1
}
println employees
输出为:[[id:2, lv:1, seniority:2], [id:3, lv:2, seniority:2], [id:1, lv:2, seniority:3]],是我们想要的结果,大概的原理是把employees里的每两个元素赋给a,b再根据比较a,b的等级和工龄返回true和false,决定要不要替换a,b的顺序,具体细节,本人也模棱两可,如有幸遇到大神阅读,还请指点一二



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值