compare 应用实例
整理2个compare 接口排序的实现方法:
?
?
一、 自己实现比较方法,包括一些复杂的多条件比较
?
public class RmComparator {/** * 比较器,可以根据VO具体字段比较 * * @param mothdName * @return */public Comparator getComparator(final String mothdName) {return new Comparator() {public int compare(Object o1, Object o2) {int val = 0;//默认不排序try {if (mothdName == null) {val = myCompare(o1, o2);} else {val = myCompare(getValue(o1, mothdName), getValue(o2, mothdName));}} catch (Exception ex) {ex.printStackTrace();}return val;}// VO中取值public Object getValue(Object bean, String methodName) throws Exception {Method getMethod = bean.getClass().getMethod(methodName, null);return getMethod.invoke(bean, null);}// 具体执行比较的方法public int myCompare(Object obj1, Object obj2) throws Exception {if (obj1 == null || obj2 == null){return obj1 == null ? -1 : 1;}Class cl = obj1.getClass();if (obj1 instanceof java.lang.Comparable) {// byte int long float..number, date , boolean , char,StringMethod getMethod = obj1.getClass().getMethod("compareTo", new Class[] { cl });return (Integer) getMethod.invoke(obj1, new Object[] { obj2 });}return 0;//默认不排序}};}??
?
?