Collections.sort 依据多个字段排序

来源:互联网 发布:卡通人物软件 编辑:程序博客网 时间:2024/06/05 21:03

今天有个需求,需要根据用户报名的课程进行排序。排序的规则包含了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());    }});

这样比较清晰,比之前用sort定义数值再来排序,更容易扩展




原创粉丝点击