java组合排序

来源:互联网 发布:windows日志服务器 编辑:程序博客网 时间:2024/06/04 18:49
package com.pub.utils;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import org.apache.commons.beanutils.BeanComparator;import org.apache.commons.collections.ComparatorUtils;import org.apache.commons.collections.comparators.ComparableComparator;import org.apache.commons.collections.comparators.ComparatorChain;import org.apache.commons.lang3.StringUtils;import com.alibaba.fastjson.JSONObject;import com.pub.model.AttractionInfo;/** *  * @Description: 组合排序 * @author chenweiming * @date 2017-4-17 下午5:12:35  * */public class MultiSortComparator<T>{    public MultiSortComparator() {            }        public void sort(List<T> result,List<SortField> sortFileds){        if(result == null || sortFileds == null){            return;        }        Comparator comparator = ComparableComparator.getInstance();        comparator = ComparatorUtils.nullLowComparator(comparator);  //允许null              comparator = ComparatorUtils.reversedComparator(comparator); //逆序        ArrayList<Object> sortFields = new ArrayList<Object>();        for(SortField sortField : sortFileds){            BeanComparator beanC = null;            if(StringUtils.isNotBlank(sortField.getName()) && sortField.getSortType() != null){                if(sortField.getSortType().intValue() == SortField.SortType.SORT_DESC){                    beanC = new BeanComparator(sortField.getName(),comparator);                }else{                    beanC = new BeanComparator(sortField.getName());                }                sortFields.add(beanC);            }        }        if(sortFields.size() > 0){            ComparatorChain multiSort = new ComparatorChain(sortFields);               Collections.sort(result,multiSort);        }    }        public static void main(String[] args) {        List<AttractionInfo> result = new ArrayList<AttractionInfo>();                AttractionInfo info1 = new AttractionInfo();        info1.setTitle("aaaaa");                info1.setCommNum(92);        info1.setAverage(2D);        info1.setDistances(2D);                AttractionInfo info2 = new AttractionInfo();        info2.setTitle("bbbbb");                info2.setCommNum(1);        info2.setAverage(2D);        info2.setDistances(2D);                AttractionInfo info3 = new AttractionInfo();        info3.setTitle("ccccc");                info3.setCommNum(8);        info3.setAverage(2D);        info3.setDistances(2D);                AttractionInfo info4 = new AttractionInfo();        info4.setTitle("ddddd");        info4.setCommNum(8);        info4.setAverage(10D);        info4.setDistances(2D);                result.add(info1);        result.add(info2);        result.add(info3);        result.add(info4);        for(AttractionInfo tmp : result){            System.out.println(tmp.getTitle());        }                List<SortField> sortFileds = new ArrayList<SortField>();        SortField sortField = new SortField("recWeight",SortField.SortType.SORT_DESC);        sortFileds.add(sortField);        SortField sortField1 = new SortField("commNum",SortField.SortType.SORT_ASC);        sortFileds.add(sortField1);        MultiSortComparator<AttractionInfo> com = new MultiSortComparator<AttractionInfo>();        com.sort(result, sortFileds);        System.out.println("======递增======");        for(AttractionInfo tmp : result){            System.out.println(JSONObject.toJSON(tmp));        }    }}

1 0
原创粉丝点击