赞
踩
今天有个需求,需要根据用户报名的课程进行排序。排序的规则包含了4个方面:有直播优先;当前专题优先;有直播的,按直播时间正序;无直播的,按最后学习时间倒序。在使用Collections.sort,最后写出来的效果,利用多个字段,对列表进行排序
- Collections.sort(result, new Comparator<EnrolmentVO>() {
- @Override
- public int compare(EnrolmentVO a, EnrolmentVO b) {
- // 有直播的优先
- if (!a.getLiveStatus().equals(b.getLiveStatus())) {
- return a.getLiveStatus().compareTo(b.getLiveStatus());
- }
- // 当前专题优先
- if (!a.getCurrentSpecialLive().equals(b.getCurrentSpecialLive())) {
- return b.getCurrentSpecialLive().compareTo(a.getCurrentSpecialLive());
- }
- // 有直播的,按直播时间正序
- if (a.getLatestLiveTime() != null && b.getLatestLiveTime() != null) {
- return a.getLatestLiveTime().compareTo(b.getLatestLiveTime());
- }
- // 无直播的,按最后学习时间倒序
- return b.getLastLearningTime().compareTo(a.getLastLearningTime());
- }
- });
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。