List的排序算法
最近在一个项目中遇到需要将一个list集合根据时间进行排序的情况,于是,写出了以下方法,为了便于展示方法,我们首先建一个实体类
- package test;
- import java.util.Date;
- public class User {
- private int userid;
- private String username;
- private Date BirthDatestr;
- private int num;
- public int getUserid() {
- return userid;
- }
- public void setUserid(int userid) {
- this.userid = userid;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public Date getBirthDatestr() {
- return BirthDatestr;
- }
- public void setBirthDatestr(Date birthDatestr) {
- BirthDatestr = birthDatestr;
- }
- public int getNum() {
- return num;
- }
- public void setNum(int num) {
- this.num = num;
- }
- public UserInfo(int userid, String username, Date birthDatestr, int num) {
- super();
- this.userid = userid;
- this.username = username;
- BirthDatestr = birthDatestr;
- this.num = num;
- }
- }
之后是排序方法
- import java.lang.reflect.InvocationTargetException;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.List;
- import java.lang.reflect.Method;
- public class SortList<E>{
- 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;
- }
- });
- }
- }