读书人

compare 施用实例

发布时间: 2012-08-25 10:06:20 作者: rapoo

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;//默认不排序}};}
?

?

?

?

读书人网 >软件架构设计

热点推荐