我从数据库拿到数据 是一个list 拿的时候没有根据对象属性排序,继而在网上找到了关于list根据对象排序的问题,下面是一段通用的代码:
public <E> E Sort(List<E> list, String getMethod, String sort) {
Collections.sort(list, new Comparator<Object>() {
@SuppressWarnings("unchecked")
public int compare(Object a, Object b) {
int ret = 0;
try{
Method m1 = ((E)a).getClass().getMethod(getMethod, null);
Method m2 = ((E)b).getClass().getMethod(getMethod, 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;
}
});
return (E) list;
}
使用的时候 调用这个方法 传三个参数进去 第一个参数:就是你要排序的那个list
第二个参数:你要排序的那个属性的get方法(比如说userId:“getUserId”)
第三个参数:你倒叙还是怎样(倒序:“desc” 顺序:null)