也就是说可以是:
List<int>
List<String>
List<int[]>
List<Object>
T可以是任何的.Net Framework中规定的类型(值类型、引用类型)
List<T>称为泛型集合,T的这个类型表示的是集合中元素的类型。
与List<T>对应的非乏型集合是ArrayList
可以通过以下工具类进行实现:import java.lang.reflect.Method
import java.util.ArrayList
import java.util.Collections
import java.util.Comparator
import java.util.List
/**
* List按照指定字段排序工具类
*
* @param <T>
*/
public class ListSortUtil<T>{
/**
* @param targetList 目标排序List
* @param sortField 排序字段(实体类属性名)
* @param sortMode 排序方式(asc or desc)
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public void sort(List<T>targetList, final String sortField, final String sortMode) {
Collections.sort(targetList, new Comparator() {
public int compare(Object obj1, Object obj2) {
int retVal = 0
try {
//首字母转大写
String newStr=sortField.substring(0, 1).toUpperCase()+sortField.replaceFirst("\\w","")
String methodStr="get"+newStr
Method method1 = ((T)obj1).getClass().getMethod(methodStr, null)
Method method2 = ((T)obj2).getClass().getMethod(methodStr, null)
if (sortMode != null &&"desc".equals(sortMode)) {
retVal = method2.invoke(((T) obj2), null).toString().compareTo(method1.invoke(((T) obj1), null).toString())// 倒序
} else {
retVal = method1.invoke(((T) obj1), null).toString().compareTo(method2.invoke(((T) obj2), null).toString())// 正序
}
} catch (Exception e) {
throw new RuntimeException()
}
return retVal
}
})
}
}
Collections.sort(list.)//升序