java根据对象的日期格式的字段进行降序排序
首先应用到java util工具类中的Comparator<T>接口的方法:
compare(Object o1,Object o2)方法是java.util.Comparator<T>接口的方法,它实际上用的是待比较对象的compareTo(Object o)方法。
具体实例:
User对象:
import java.io.Serializable;
import java.util.Date;
/**
* @author wangmuming
*
*/
public class User implements Comparable<Object>, Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int id;
private String name;
private Date birthday;
public User(int id, String name, Date birthday) {
this.id = id;
this.name = name;
this.birthday = birthday;
}
/*
* Getters and Setters
*/
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 Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public int compareTo(Object o) {
if (this == o) {
return 0;
} else if (o != null && o instanceof User) {
User u = (User) o;
if (u.getBirthday().getTime() < this.birthday.getTime()) //根据date进行排序
return -1;
else
return 1;
// if (id <= u.id) { //根据id进行排序
// return -1;
// } else {
// return 1;
// }
} else {
return -1;
}
}
@Override
public String toString() {
return "user is: id :"+this.id + "| name :"+this.name +"| birthday :"+this.birthday.toLocaleString();
}
测试方法:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
public class Test{
//编写Comparator,根据User的birthday对User进行排序
private static final Comparator<User> COMPARATOR = new Comparator<User>() {
public int compare(User o1, User o2) {
return o1.compareTo(o2);//运用User类的compareTo方法比较两个对象
}
};
public static void main(String[] args) {
ArrayList<User> user = new ArrayList<User>();
User user1 = new User(1,"wangmm1",new Date());
User user3 = new User(2,"wangmm2",new Date(new Date().getTime()+20000));
User user2 = new User(3,"wangmm3",new Date(new Date().getTime()+10000));
User user4 = new User(4,"wangmm3",new Date(new Date().getTime()+50000));
user.add(user2);
user.add(user1);
user.add(user3);
user.add(user4);
Collections.sort(user, COMPARATOR);//用我们写好的Comparator对user进行排序
for(int i=0;i<user.size();i++){
System.out.println(user.get(i).toString());
}
}
执行结果:
user is: id :4| name :wangmm3| birthday :2014-3-10 17:34:58
user is: id :2| name :wangmm2| birthday :2014-3-10 17:34:28
user is: id :3| name :wangmm3| birthday :2014-3-10 17:34:18
user is: id :1| name :wangmm1| birthday :2014-3-10 17:34:08