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的顺序,具体细节,本人也模棱两可,如有幸遇到大神阅读,还请指点一二