Java使用Collections.sort进行组合分类排序

    //对Map进行排序,可以先把Map转成一个Entry List,然后再排序

    List<Map.Entry<String, Date>> list = new LinkedList(idMapCreateTime.entrySet());
    Collections.sort(list, new Comparator<Map.Entry<String, Date>>() {
        @Override
        public int compare(Map.Entry<String, Date> o1, Map.Entry<String, Date> o2) {
            return o2.getValue().compareTo(o1.getValue());
        }
    });
    /**
     * 排序规则:先按状态分类排序:成功、失败、取消、其它  然后每个分类可以再按时间排序 
     * 成功:状态时间顺序
     * 失败:状态时间到序
     * 取消:状态时间到序
     * 其它:状态时间到序
     */
    Collections.sort(entityList, new Comparator<ObjectEntity>() {
        @Override
        public int compare(ObjectEntity o1, ObjectEntity o2) {
            if (o1.getStatus() != o2.getStatus()) {
                if (o1.getStatus() == StatusEnum.SUCCESS) {
                    return -1;
                } else if (o2.getStatus() == StatusEnum.SUCCESS) {
                    return 1;
                } else if (o1.getStatus() == StatusEnum.FAILURE) {
                    return -1;
                } else if (o2.getStatus() == StatusEnum.FAILURE) {
                    return 1;
                } else if (o1.getStatus() == StatusEnum.CANCEL) {
                    return -1;
                } else if (o2.getStatus() == StatusEnum.CANCEL) {
                    return 1;
                }
            }
            if (o1.getStatus() == StatusEnum.SUCCESS) {
                return o1.getStatusTime().compareTo(o2.getStatusTime());
            } else {
                return -o1.getStatusTime().compareTo(o2.getStatusTime());
            }
        }
    }); 

猜你喜欢

转载自blog.csdn.net/zengrenyuan/article/details/78117857