public class SortList{public static Logger loger = LoggerFactory.getLogger(SortList.class);/***
* 方法描述:自定义排序(这里暂时只支持3种属性同时排序,后面要加属性可扩展下面哪种类型的排序的if else)
* 这里是根据中英文首字母第一排序
*@param1 list 要排序的对象集合
*@param2 methods 要排序的对象属性
*@param3 sorts 属性是降序还是升序 如果传NULL 默认升序(sorts数组跟methods是一个一个对应的)
* @Title: Sort
*
* @modifier*/@SuppressWarnings("all")public void Sort(List list, final String[] methods, finalString[] sorts){
Collections.sort(list,newComparator() {public intcompare(Object a, Object b) {int ret = 0;try{if(methods==null || methods.length==0){
loger.error("未传入排序字段");
}else{
Method m1= ((E)a).getClass().getMethod(methods[0], null);
Method m2= ((E)b).getClass().getMethod(methods[0], null);if(sorts == null || sorts.length==0 || "asc".equals(sorts[0])){
ret= ChinaInitial.getPYIndexStr(m1.invoke(((E)a), null).toString(),false).substring(0, 1).compareTo(ChinaInitial.getPYIndexStr(m2.invoke(((E)b), null).toString(),false).substring(0, 1));
}else{
ret= ChinaInitial.getPYIndexStr(m2.invoke(((E)b), null).toString(),false).substring(0, 1).compareTo(ChinaInitial.getPYIndexStr(m1.invoke(((E)a), null).toString(),false).substring(0, 1));
}if(methods.length>1){for(int i = 0;i
String method=methods[i];
Method m3= ((E)a).getClass().getMethod(method, null);
Method m4= ((E)b).getClass().getMethod(method, null);
Object m3Obj= m3.invoke(((E)a), null);
Object m4Obj= m4.invoke(((E)b), null);if(m3Obj instanceofDate){if(ret==0){if(sorts==null || sorts.length==0 || sorts[i].equals("asc")){
ret=((Date)m4Obj).compareTo((Date)m3Obj);
}else{
ret=((Date)m3Obj).compareTo((Date)m4Obj);
}
}
}else if(m3Obj instanceofInteger){if(ret==0){if(sorts==null || sorts.length==0 || sorts[i].equals("asc")){
ret=((Integer)m4Obj).compareTo((Integer)m3Obj);
}else{
ret=((Integer)m3Obj).compareTo((Integer)m4Obj);
}
}
}
}
}
}
}catch(Exception e){
loger.error("异常",e);
}returnret;
}
});
}
}