List排序

Collections.sort(fli, new Comparator() {
      public int compare(Object o1, Object o2) {
            return new Integer(((AppFunctionPage)o1).getDisplay_order()).compareTo(new Integer(((AppFunctionPage) o2).getDisplay_order()));
      }
});
 
public static void main(String[] args) {
    ArrayList list = new ArrayList();
    list.add("92.8");
    list.add("68.9");
    list.add("168.61");
    list.add("242");
    list.add("317");
    list.add("105");
    /** 字符串排序**/
    Collections.sort(list);
    System.out.println(list.toString()); /** [105, 168.61, 242, 317, 68.9, 92.8] **/
    Collections.sort(list, new Comparator() {
      @Override
      public int compare(Object o1, Object o2) {
        return new Double((String) o1).compareTo(new Double((String) o2));
      }
    });
    System.out.println(list.toString()); /**** [68.9, 92.8, 105, 168.61, 242, 317]  **/
  }

通用排序类

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**  * @author jardot  * @version 1.0 通用排序  */
public class SortList<E> {
    @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;
                }
            });
    }
}

通用排序使用方法

public static void main(String[] args)throws Exception{
    List<UserInfo> list = new ArrayList<UserInfo>();  
    SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");  
    list.add(new UserInfo(3,"b",formater.parse("1980-12-01"),11));  
    list.add(new UserInfo(1,"c",formater.parse("1980-10-01"),30));  
    list.add(new UserInfo(2,"a",formater.parse("1973-10-01"),11));  
    System.out.println("-------原来序列-------------------");  
    for(UserInfo user : list){  
        System.out.println(user.toString());  
    }  
    /** 调用排序通用类  **/
    SortList<UserInfo> sortList = new SortList<UserInfo>();  
    //按userId排序  
    sortList.Sort(list, "getUserId", "desc");  
    System.out.println("--------按userId倒序------------------");  
    for(UserInfo user : list){  
        System.out.println(user.toString());
    }  
    /** 按username排序  **/
    sortList.Sort(list, "getUsername", null);  
    System.out.println("---------按username排序-----------------");  
    for(UserInfo user : list){  
        System.out.println(user.toString());  
    }  
    /** 按birthDate排序  **/
    sortList.Sort(list, "getBirthDatestr", null);  
    System.out.println("---------按birthDate排序-----------------");  
    for(UserInfo user : list){  
        System.out.println(user.toString());  
    }  
}

你可能感兴趣的:(List排序)