关于使用Comparator对集合进行强制排序.

来源:互联网 发布:淘宝打假套话 编辑:程序博客网 时间:2024/05/18 05:03
List<TsysParameter> selectRole = ParamUtil.getByType("DUTYSORT");
Collections.sort(selectRole, new Comparator<Object>(){//按编号升序。
@Override
public int compare(Object o1, Object o2) {
TsysParameter p1 = (TsysParameter)o1;
TsysParameter p2 = (TsysParameter)o2;

return p1.getParano().compareTo(p2.getParano());//调用String的compareTo();方法进行对比

}

});


另提供SortList对集合排序的公共方法:




    @SuppressWarnings("unchecked") 
    public void sortList(List list, final String method, final String sort) { 
 
        final String name = "get" + method.substring(0, 1).toUpperCase() 
                + method.substring(1); 
        Collections.sort(list, new Comparator() { 
            public int compare(Object a, Object b) { 
                int i = 0; 
                try { 
                    Method m1 = ((E) a).getClass().getMethod(name, null); 
                    Method m2 = ((E) b).getClass().getMethod(name, null); 
                    Object o1 = m1.invoke(((E) a), null); 
                    Object o2 = m2.invoke(((E) b), null); 
                    i = compareTo(o1.getClass(), o1, o2); 
                } catch (Exception e) { 
                    System.err.println(e.getMessage()); 
                } 
                return i; 
            } 
        });         
 
    } 
 
    public int compareTo(Class c, Object a, Object b) { 
        if (c == Integer.class) { 
            return ((Integer) a).compareTo((Integer) b); 
        } else if (c == Long.class) { 
            return ((Long) a).compareTo((Long) b); 
        } else if (c == Double.class) { 
            return ((Double) a).compareTo((Double) b); 
        } else if (c == Short.class) { 
            return ((Short) a).compareTo((Short) b); 
        } else if (c == Float.class) { 
            return ((Float) a).compareTo((Float) b); 
        } else {             
            return (a.toString().compareTo(b.toString())); 
        } 
    } 

原创粉丝点击