public void Sort(List<E> list, final String method, final String sort){
Collections.sort(list, new Comparator() {
public int compare(Object a, Object b) {
int ret = 0;
try{
Method m1 = ((E)a).getClass().getMethod(method, null);
Method m2 = ((E)b).getClass().getMethod(method, null);
if(sort != null && "desc".equals(sort))//倒序
ret = m2.invoke(((E)b), null).toString().compareTo(m1.invoke(((E)a), null).toString());
else//正序
ret = m1.invoke(((E)a), null).toString().compareTo(m2.invoke(((E)b), null).toString());
}catch(NoSuchMethodException ne){
System.out.println(ne);
}catch(IllegalAccessException ie){
System.out.println(ie);
}catch(InvocationTargetException it){
System.out.println(it);
}
return ret;
}
});
}
}
新建一个类UserInfo
public class UserInfo {
private Integer userId;
private String username;
private Integer age;
private Integer sort;//排序字段
public java.lang.Integer getUserId() {
return userId;
}
public void setUserId(java.lang.Integer userId) {
this.userId = userId;
}
public java.lang.String getUsername() {
return username;
}
public void setUsername(java.lang.String username) {
this.username = username;
}
public java.lang.Integer getAge() {
return age;
}
public void setAge(java.lang.Integer age) {
this.age = age;
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
}
然后新建测是类Test
public class Test {
public static void main(String[] args) throws ParseException{
List<UserInfo> list = new ArrayList<UserInfo>();
for(int i=0;i<=5;i++){
UserInfo u = new UserInfo();
u.setSort(i);
list.add(u);
}
/* UserInfo u1 = new UserInfo();
u1.setSort(1);
list.add(u1);
UserInfo u2 = new UserInfo();
u2.setSort(2);
list.add(u2);
UserInfo u4 = new UserInfo();
u4.setSort(4);
list.add(u4);
UserInfo u3 = new UserInfo();
u3.setSort(3);
list.add(u3);*/
//调用排序通用类
SortList<UserInfo> sortList = new SortList<UserInfo>();
System.out.println("--------按sort倒序前------------------");
for(UserInfo user : list){
System.out.println(user.getSort());
}
//按sort排序 倒序
sortList.Sort(list, "getSort", "desc");
System.out.println("--------按sort倒序后------------------");
for(UserInfo user : list){
System.out.println(user.getSort());
}
}
}
看完之后 你懂得!!!!!