【Util 通用代码】 集合排序类 -- CollectionUtils

使用说明

封装是apache 的 commons 组件中的排序类,使用时需要导入

    这两个包。


源码


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 java.util.*;

/**
 *
 */
public class CollectionUtils
{
    /**
     * 正序
     */
    public static final String SORT_ORDER_ASC = "asc";

    /**
     *  逆序
     */
    public static final String SORT_ORDER_DESC = "desc";

    /**
     * 方法名称:sortTheList
     * 内容摘要:根据指定的字段数组对List中的对象进行排序
     * @param list
     * @param sortFields
     * @param sortOrder
     */
    public static void sortTheList(List list, String[] sortFields, String sortOrder)
    {
        if(sortFields == null || sortFields.length <= 0)
        {
            return;
        }

        ArrayList sorts = new ArrayList();

        Comparator c = ComparableComparator.getInstance();
        c = ComparatorUtils.nullLowComparator(c);  //允许null
        if (StringUtil.isEqual(sortOrder, CollectionUtils.SORT_ORDER_DESC))
        {
            c = ComparatorUtils.reversedComparator(c); //逆序
        }

        String sortField = null ;
        for(int i=0 ; i< sortFields.length ; i++)
        {
            sortField = sortFields[i];
            if(StringUtil.isNotEmpty(sortField))
            {
                sorts.add(new BeanComparator(sortField,c));
            }
        }

        ComparatorChain multiSort = new ComparatorChain(sorts);

        Collections.sort(list, multiSort);
    }

    /**
     * 方法名称:sortTheList
     * 内容摘要:根据指定的字段对List中的对象进行排序
     * @param list
     * @param sortFiled
     * @param sortOrder
     */
    public static void sortTheList(List list, String sortFiled, String sortOrder)
    {
        if(StringUtil.isEmpty(sortFiled))
        {
            return;
        }

        String[] sortFields = new String[]{sortFiled};

        sortTheList(list, sortFields, sortOrder);
    }

    public static void main(String[] args)
    {
        Set one = new HashSet();
        Set two = new HashSet();

        one.add(new Integer(1));
        one.add(new Integer(1));
        one.add(new Integer(2));
        one.add(new Integer(3));

        two.add(new Integer(4));
        two.add(new Integer(3));
        two.add(new Integer(5));
        two.add(new Integer(6));

        two.removeAll(one);

        System.out.println(two);
    }
}


使用范围

CollectionUtils 适用于数据库中排序性能开销很大,把数据排序放到代码的层面上来处理,性能会明显提升。

你可能感兴趣的:(apache,String,list,null,Integer,import)