给List中的对象排序

package com.asia.home.cn.utils;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
*
* @author zhutongyu
* List排序
* @param <E>
*/
public class SortList<E>{  
    /**
     * 给List中的对象属性排序,如:list<Exiuser>按"入职时间"排序
     * @param list
     * @param method //指定方法,如getFdWorkDay
     * @param sort   //"desc"为倒顺,否则为升序
     */
    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; 
            } 
         }); 
    } 
   
    /**
     * 给List<Object>中的任一属性排序
     * @param list
     * @param index //Object数组的下标
     * @param sort
     */
    public void SortObject(List<E> list, final int index, final String sort){ 
        Collections.sort(list, new Comparator() {            
            public int compare(Object a, Object b) { 
                int ret = 0; 
                    Object m1[] = (Object[])a;
                    Object m2[] = (Object[])b;
                    if(sort != null && "desc".equals(sort))//倒序 
                        ret = m2[index].toString().compareTo(m1[index].toString());  
                    else//正序 
                        ret = m1[index].toString().compareTo(m2[index].toString());  
                return ret; 
            } 
         }); 
    } 




使用方法:
  //调用排序通用类 
        SortList<Object> sortList = new SortList<Object>(); 
         
        //按下标为5的值排序 
        sortList.SortObject(taskList, 5, "desc"); 

         //调用排序通用类 
        SortList<Exiuser> sortList = new SortList<Exiuser>(); 
         
        //按方法排序 
        sortList.SortObject(taskList, "getFdWorkDay", "desc");

你可能感兴趣的:(list)