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

来源:互联网 发布:程序员三强 编辑:程序博客网 时间:2024/06/06 09:15
    //对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());            }        }    }); 
原创粉丝点击