通过jdk比较器Lambda表达式实现分组同时排序

通过jdk比较器Lambda表达式实现分组同时排序
排序不通过数据库查询,通过jdk比较器Lambda表达式实现,效果如下:
通过jdk比较器Lambda表达式实现分组同时排序
//页面page对象
Pagination pagination = manager.getPage(queryType,cpn(pageNo), CookieUtils
.getPageSize(request));
//crit.setProjection(Projections.groupProperty("parentId"));
List<CmsDictionary> ls = (List<CmsDictionary>) pagination.getList();
/*
jdk1.8前
Collections.sort(ls, new Comparator<CmsDictionary>() {
@Override
public int compare(CmsDictionary o1, CmsDictionary o2) {
if(o1.getParentId().compareTo(o2.getParentId()) == 0) {
return o1.getPriority().compareTo(o2.getPriority());
}else {
return o1.getParentId().compareTo(o2.getParentId());
}
}
});
jdk1.8
ls.sort(new Comparator<CmsDictionary>() {
@Override
public int compare(CmsDictionary o1, CmsDictionary o2) {
if(o1.getParentId().compareTo(o2.getParentId()) == 0) {
return o1.getPriority().compareTo(o2.getPriority());
}else {
return o1.getParentId().compareTo(o2.getParentId());
}
}
});
*/
//jdk1.8 Lambda表达式
ls.sort(Comparator.comparing(CmsDictionary::getParentId).thenComparing(CmsDictionary::getPriority));
//排好序后再放入页面对象
pagination.setList(ls);
当然如果数据量太大的话,还是不建议这样玩的,排序这种算法其实还是有点耗性能的。