Java实现根据List中对象的相应属性进行排序

 

最近项目中遇到一个排序的问题,需要传入一个List,List中存入了相应的对象,要根据对象中的一些属性进行排序,从网上查询了不少资料后问题终于得到了解决。现将具体方法记录下来,万一以后用到就不用在去想办法啦。

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

/**

 *

 * @author 叶祥杰

 * @E-mail monkey_ye@qq.com

 * @创建时间 2011-7-20

 * @param <E>

 */

public class SortList<E> {

    /**

     * 根据对象的相关属性对对象List进行排序

     * @param list 需要排序的list

     * @param method 排序的属性

     * @param sort 排序的方式,desc/asc

     * 例如:sortList.Sort(adt, "getVal", "desc");

     */

    @SuppressWarnings({ "unchecked", "rawtypes" })

    public  void Sort(List<E> list, final String method, final String sort){ 

        Collections.sort(list, new Comparator() {            

            public int compare(Object a, Object b) { 

                int ret = 0; 

                try

                    Method m1 = ((E)a).getClass().getMethod(method, null)

                    Method m2 = ((E)b).getClass().getMethod(method, null);  

                    if(sort != null && "desc".equals(sort))//倒序 

                        ret = m2.invoke(((E)b), null).toString().compareTo(m1.invoke(((E)a), null).toString());  

                    else//正序 

                        ret = m1.invoke(((E)a), null).toString().compareTo(m2.invoke(((E)b), null).toString()); 

                }catch(NoSuchMethodException ne){ 

                    System.out.println(ne); 

                }catch(IllegalAccessException ie){ 

                    System.out.println(ie); 

                }catch(InvocationTargetException it){ 

                    System.out.println(it); 

                } 

                return ret; 

            } 

         }); 

    } 

 

 

}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值