【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 适用于数据库中排序性能开销很大,把数据排序放到代码的层面上来处理,性能会明显提升。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值