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

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zengrenyuan/article/details/78117857
    //对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());
            }
        }
    }); 
展开阅读全文

没有更多推荐了,返回首页