读书人

java兑现一个自定义排序

发布时间: 2012-12-24 10:43:14 作者: rapoo

java实现一个自定义排序

?

java中List排序 例子 package test; import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map; public class Test {     /**     * @param args     */    public static void main(String[] args) {        // TODO 自生成されたメソッド?スタブ        List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();        Map<String,Object> m1 = new HashMap<String,Object>();        m1.put("NO", 2);        m1.put("NO1", "2");        m1.put("NO2", "f");        list.add(m1);        Map<String,Object> m2 = new HashMap<String,Object>();        m2.put("NO", 1);        m2.put("NO1", "10");        m2.put("NO2", "z");        list.add(m2);                Map<String,Object> m3 = new HashMap<String,Object>();        m3.put("NO", 1);        m3.put("NO1", "10");        m3.put("NO2", "a");        list.add(m3);         Test test = new Test();        test.getSortedList(list,new String[]{"NO","NO1","NO2"});        System.out.println(list);            }        private void getSortedList(List<Map<String, Object>> list, String[] pros) {         if (pros.length <= 0)            return;        for (int i = pros.length - 1; i >= 0; i--) {            final String pro = pros[i];            try {                Collections.sort(list, new Comparator<Map<String, Object>>() {                    String name = "get";                    Method method = Map.class.getMethod(name, new Class[] {Object.class});                     public int compare(Map<String, Object> a, Map<String, Object> b) {                        if (a == null || b == null) {                            return 0;                        } else {                            int flag = 0;                            try {                                 Object as = method.invoke(a, new Object[] {pro});                                Object bs = method.invoke(b, new Object[] {pro});                                if (as == null && bs == null)                                    return 0;                                else if (as == null)                                    return -1;                                else if (bs == null)                                    return 1;                                else {                                    if (as instanceof Integer) {                                                                                Integer va = (Integer) as;                                        Integer vb = (Integer) bs;                                        flag = va.compareTo(vb);                                    }else if (as instanceof String) {                                        String va = (String) as;                                        String vb = (String) bs;                                        flag = va.compareTo(vb);                                    }                                }                            } catch (IllegalArgumentException e) {                                System.out.println("e1");                            } catch (IllegalAccessException e) {                                System.out.println("e2");                            } catch (InvocationTargetException e) {                                System.out.println("e3");                            }                            return flag;                        }                    }                });            } catch (NoSuchMethodException e) {                //TODO Auto-generated catch block                 e.printStackTrace();            }        }    }}执行结果:[{NO=1, NO2=a, NO1=10}, {NO=1, NO2=z, NO1=10}, {NO=2, NO2=f, NO1=2}]

读书人网 >编程

热点推荐