user实体
public class User {
private int id;
private String name;
private String age;
public User(int id, String name, String age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
工具类编写
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class Util<T> {
//数组排序的方法
//传入list 传入排序字段 传入是否升序
public List<T> sort(List<T> list, final String sortField, final Boolean Ascending){
Collections.sort(list, new Comparator<T>() {//排序
@Override
public int compare(T o1, T o2) {
int retVal=0;
//首字母转大写
String newStr=sortField.substring(0, 1).toUpperCase()+sortField.replaceFirst("\\w","");
String methodStr="get"+newStr;
try {
Method method1 = ((T) o1).getClass().getMethod(methodStr, null);
Method method2 = ((T) o2).getClass().getMethod(methodStr, null);
retVal = method2.invoke(((T) o2), null).toString().compareTo(method1.invoke(((T) o1), null).toString()); // 倒序
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
if (Ascending) {
return 0-retVal;
} else {
return retVal;
}
}
});
return list;
}
}
测试类
import java.util.ArrayList;
import java.util.List;
public class bb {
public static void main(String[] args) {
// TODO Auto-generated method stub
//System.out.print("123");
List<User> userlist=new ArrayList<>();
User user=new User(1, "张1", "15");
userlist.add(user);
user=new User(5, "张5", "15");
userlist.add(user);
user=new User(2, "张2", "15");
userlist.add(user);
user=new User(4, "张4", "15");
userlist.add(user);
System.out.println("排序前");
for(int i=0;i<userlist.size();i++) {
System.out.println(userlist.get(i).getName());
}
System.out.println("升序排序");
Util util=new Util<User>();
util.sort(userlist, "id", true);
for(int i=0;i<userlist.size();i++) {
System.out.println(userlist.get(i).getName());
}
System.out.println("倒序排序");
util.sort(userlist, "id", false);
for(int i=0;i<userlist.size();i++) {
System.out.println(userlist.get(i).getName());
}
}
}