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());
}
}
}