java list bean 排序_Java中:对已有的List<Bean>进行排序

对于Java中一个已经存在的List来说,要给他排序,传统上有两种方式:一个是Bean要实现Comparable接口,另一个是创建Comparator子类。

第一种方式需要在原有的Bean上扩展Comparable接口,一般使用不多,因为最好不要随意更改JavaBean。

第二种方式则是独立于原有JavaBean,实现的方法需要传入两个Bean对象。

在排序的时候,用到Arrays.sort(Array arr,Comparator comparator)方法或者是Collentions.sort(Collection> coll,Comparator comparator)方法进行排序。

但是,这里我并不打算使用传统的方式排序。传统的方法一个需要扩展原有Bean,另一个需要新建一个Java类,这样的工作方式看起来笨重,操作起来也不方便。如果要对10个不同类型List集合排序,它就需要扩展10个Bean,或者新建10个类。

下面的方法,使用到Apache Commons下的commons-beanutils和commons-collections包,实现的是一个简单、通用的排序:

/*** @describe 依据某个字段对集合进行排序

*@author...

* @date 2013-1-22 下午3:44:47

*@paramlist

* 待排序的集合

*@paramfieldName

* 依据这个字段进行排序

*@paramasc

* 如果为true,是正序;为false,为倒序*/@SuppressWarnings("unchecked")public static void sort(List list, String fieldName, booleanasc) {

Comparator> mycmp =ComparableComparator.getInstance();

mycmp= ComparatorUtils.nullLowComparator(mycmp); //允许null

if (!asc) {

mycmp= ComparatorUtils.reversedComparator(mycmp); //逆序

}

Collections.sort(list,newBeanComparator(fieldName, mycmp));

}

这个方法完全没必要使用泛型方法的定义,实际应用中可以去掉泛型方法定义。

一个使用的例子:

List list = new ArrayList();

Util.sort(list,"position", false);

position是Category类中一个用于排序字段。

关于commons-beanutils和commons-collections的详细使用,这里不多介绍。有兴趣的可以去查资料,研究一下。(如果不研究,上面的方法也是不能看懂的)

多一句:在Java中,如果遇到要做重复的事情,我们就来精神了,因为这样的事情我们往往抽象出来做一次就够了!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值