導入Java . lang . reflect . method;
導入Java . util . ArrayList;
導入Java . util . collections;
導入Java . util . comparator;
導入Java . util . list;
/**
* List根據指定的字段對工
導入Java . lang . reflect . method;
導入Java . util . ArrayList;
導入Java . util . collections;
導入Java . util . comparator;
導入Java . util . list;
/**
* List根據指定的字段對工具類進行排序。
*
* @ param & ltT & gt
*/
公共類ListSortUtil & ltT & gt{
/**
* @param targetList目標排序列表
* @param sortField排序字段(實體類屬性名)
* @param sortMode排序方法(asc或desc)
*/
@SuppressWarnings({ "unchecked "," rawtypes" })
公共void排序(List & ltT & gttargetList,最終字符串排序字段,最終字符串排序模式){
Collections.sort(targetList,new Comparator() {
public int compare(Object obj 1,Object obj2) {
int retVal = 0;
嘗試{
//首字母大寫
string newStr = sortfield . substring(0,1)。toupper case()+sortfield . replace first(" \ \ w "," ");
string method str = " get "+newStr;
方法method1 = ((T)obj1)。getClass()。getMethod(methodStr,null);
方法method2 = ((T)obj2)。getClass()。getMethod(methodStr,null);
if (sortMode!= null & amp& amp《desc》。equals(sortMode)) {
retVal = method 2 . invoke((T)obj 2),null)。toString()。compare to(method 1 . invoke((T)obj 1),null)。toString());//逆序
}否則{
retVal = method 1 . invoke((T)obj 1),null)。toString()。compare to(method 2 . invoke((T)obj 2),null)。toString());//正序
}
} catch(異常e) {
拋出新的runtime exception();
}
返回retVal
}
});
}
}
Collections.sort(list。);//升序排列