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

groovy list 根据双重条件排序

发布时间:2020-12-14 16:50:51 所属栏目:大数据 来源:网络整理
导读:groovy语言有sort()方法可以对list进行排序,如 def list = [1,3,5,6,2,4,2]println list.sort() 将输出 [1,6] 这是最简单的排序,如果是英文,则会按照字母顺序进行排列。有时需要一些更为复杂的排序,如: def employees = [ [id: 1,lv: 2,seniority: 3],[

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

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

println list.sort()
将输出
[1,6]

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

def employees = [
        [id: 1,lv: 2,seniority: 3],[id: 2,lv: 1,seniority: 2],[id: 3,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,[id:1,seniority:3]],是我们想要的结果,大概的原理是把employees里的每两个元素赋给a,b再根据比较a,b的等级和工龄返回true和false,决定要不要替换a,b的顺序,具体细节,本人也模棱两可,如有幸遇到大神阅读,还请指点一二

(编辑:李大同)

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

    推荐文章
      热点阅读