List的排序算法

最近在一个项目中遇到需要将一个list集合根据时间进行排序的情况,于是,写出了以下方法,为了便于展示方法,我们首先建一个实体类

Java代码 复制代码 收藏代码
  1. package test;
  2. import java.util.Date;
  3. public class User {
  4. private int userid;
  5. private String username;
  6. private Date BirthDatestr;
  7. private int num;
  8. public int getUserid() {
  9. return userid;
  10. }
  11. public void setUserid(int userid) {
  12. this.userid = userid;
  13. }
  14. public String getUsername() {
  15. return username;
  16. }
  17. public void setUsername(String username) {
  18. this.username = username;
  19. }
  20. public Date getBirthDatestr() {
  21. return BirthDatestr;
  22. }
  23. public void setBirthDatestr(Date birthDatestr) {
  24. BirthDatestr = birthDatestr;
  25. }
  26. public int getNum() {
  27. return num;
  28. }
  29. public void setNum(int num) {
  30. this.num = num;
  31. }
  32. public UserInfo(int userid, String username, Date birthDatestr, int num) {
  33. super();
  34. this.userid = userid;
  35. this.username = username;
  36. BirthDatestr = birthDatestr;
  37. this.num = num;
  38. }
  39. }

之后是排序方法

Java代码 复制代码 收藏代码
  1. import java.lang.reflect.InvocationTargetException;
  2. import java.util.Collections;
  3. import java.util.Comparator;
  4. import java.util.List;
  5. import java.lang.reflect.Method;
  6. public class SortList<E>{
  7. public void Sort(List<E> list, final String method, final String sort){
  8. Collections.sort(list, new Comparator() {
  9. public int compare(Object a, Object b) {
  10. int ret = 0;
  11. try{
  12. Method m1 = ((E)a).getClass().getMethod(method, null);
  13. Method m2 = ((E)b).getClass().getMethod(method, null);
  14. if(sort != null && "desc".equals(sort))//倒序
  15. ret = m2.invoke(((E)b), null).toString().compareTo(m1.invoke(((E)a), null).toString());
  16. else//正序
  17. ret = m1.invoke(((E)a), null).toString().compareTo(m2.invoke(((E)b), null).toString());
  18. }catch(NoSuchMethodException ne){
  19. System.out.println(ne);
  20. }catch(IllegalAccessException ie){
  21. System.out.println(ie);
  22. }catch(InvocationTargetException it){
  23. System.out.println(it);
  24. }
  25. return ret;
  26. }
  27. });
  28. }
  29. }    
posted on 2013-02-21 20:16  蜜雪薇琪  阅读(298)  评论(0编辑  收藏  举报