zoukankan      html  css  js  c++  java
  • List对象排序的通用方法

    转自 @author chenchuang

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

    /**
     * List对象排序的通用方法
     *  
     * @author chenchuang
     *  
     * @param <E>
     */
    public class ListSort<E> {
        /**
         *  
         * @param list 要排序的集合
         * @param method 要排序的实体的属性所对应的get方法
         * @param sort desc 为正序   
         */
        public void Sort(List<E> list, final String method, final String sort) {
            // 用内部类实现排序  
            Collections.sort(list, new Comparator<E>() {

                public int compare(E a, E b) {
                    int ret = 0;
                    try {
                        // 获取m1的方法名  
                        Method m1 = a.getClass().getMethod(method, null);
                        // 获取m2的方法名  
                        Method m2 = b.getClass().getMethod(method, null);

                        if (sort != null && "desc".equals(sort)) {

                            ret = Double.valueOf(m2.invoke(((E) b), null).toString()).compareTo(Double.valueOf((m1.invoke(((E) a), null).toString())));
                        } else {
                            // 正序排序  
                            ret = Double.valueOf(m1.invoke(((E) a), null).toString()).compareTo(Double.valueOf((m2.invoke(((E) b), null).toString())));
                        }
                    } catch (NoSuchMethodException ne) {
                        System.out.println(ne);
                    } catch (IllegalArgumentException e) {
                        // TODO Auto-generated catch block  
                        e.printStackTrace();
                    } catch (IllegalAccessException e) {
                        // TODO Auto-generated catch block  
                        e.printStackTrace();
                    } catch (InvocationTargetException e) {
                        // TODO Auto-generated catch block  
                        e.printStackTrace();
                    }
                    return ret;
                }
            });
        }
    }

  • 相关阅读:
    Object.Instantiate 实例
    .idata数据的解析
    数据结构-静态链表
    数据结构-循环链表
    Android---两个视图间的淡入淡出
    HDU 4597 Play Game 2013 ACM-ICPC吉林通化全国邀请赛H题
    Android 编译时出现r cannot be resolved to a variable
    找工作笔试面试那些事儿(5)---构造函数、析构函数和赋值函数
    SFINAE 模板替换失败而非报错的应用
    模板实参推导 & xx_cast的实现
  • 原文地址:https://www.cnblogs.com/Westfalen/p/5350769.html
Copyright © 2011-2022 走看看