import java.io.Serializable;
public class Student implements Serializable {
private static final long serialVersionUID = 8553487662223781924L;
private Integer id;
private String name;
private String birthday;
public Student() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "Student{" + "id=" + id + ", name='" + name + ", birthday=" + birthday + "}";
}
}
import com.ucarinc.bean.Student;
import java.util.Comparator;
public class SortStudentsById implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Student stu1 = (Student)o1;
Student stu2 = (Student)o2;
return stu1.getId().compareTo(stu2.getId());
}
}
import com.ucarinc.bean.Student;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Comparator;
import java.util.Date;
/**
* 按照生日对学生进行排序
*/
public class SortStudentsByBirthday implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Student stu1 = (Student) o1;
Student stu2 = (Student) o2;
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date birthday1 = sdf.parse(stu1.getBirthday());
Date birthday2 = sdf.parse(stu2.getBirthday());
return birthday1.compareTo(birthday2);
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
}
public static void main(String[] args) {
List<Student> studentList = getStudentList();
printStudentList("排序前", studentList);
System.out.println("------------------------------------");
Collections.sort(studentList, new SortStudentsById());
printStudentList("根据ID排序后", studentList);
System.out.println("------------------------------------");
Collections.sort(studentList, new SortStudentsByBirthday());
printStudentList("根据ID排序后,再根据生日排序", studentList);
}
private static List<Student> getStudentList() {
List<Student> students = new ArrayList<>()
Student stu1 = new Student()
stu1.setId(3)
stu1.setBirthday("1973-01-01 00:00:00")
stu1.setName("刘能")
Student stu2 = new Student()
stu2.setId(1)
stu2.setBirthday("1973-01-01 12:00:00")
stu2.setName("赵四")
Student stu3 = new Student()
stu3.setId(2)
stu3.setBirthday("1999-09-09 09:09:19")
stu3.setName("谢广坤")
students.add(stu1)
students.add(stu2)
students.add(stu3)
return students
}
private static void printStudentList(String type, List<Student> students) {
for (Student student : students) {
System.out.println(type + student);
}
}
排序前Student{id=3, name='刘能, birthday=1973-01-01 00:00:00}
排序前Student{id=1, name='赵四, birthday=1973-01-01 12:00:00}
排序前Student{id=2, name='谢广坤, birthday=1999-09-09 09:09:19}
根据ID排序后Student{id=1, name='赵四, birthday=1973-01-01 12:00:00}
根据ID排序后Student{id=2, name='谢广坤, birthday=1999-09-09 09:09:19}
根据ID排序后Student{id=3, name='刘能, birthday=1973-01-01 00:00:00}
根据ID排序后,再根据生日排序Student{id=3, name='刘能, birthday=1973-01-01 00:00:00}
根据ID排序后,再根据生日排序Student{id=1, name='赵四, birthday=1973-01-01 12:00:00}
根据ID排序后,再根据生日排序Student{id=2, name='谢广坤, birthday=1999-09-09 09:09:19}