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的顺序,具体细节,本人也模棱两可,如有幸遇到大神阅读,还请指点一二 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |