对象排序可以使用Comparable接口和Comparator接口,这两个接口可以实现同样的目的。
Comparable:在自定义类时就要实现这个接口,实现它的compareTo方法。事先就要考虑排序问题。
Comparator :这个接口可以独立于自定义类,可以认为初期设计时没有考虑排序问题,对类打的一个补丁。
另外使用Comparator接口实现对象的排序,可以使逻辑更加清晰,数据和排序逻辑分离。
以下使用Comparable对对象进行排序。
CompareDemo.java
import java.util.Arrays;
public class CompareDemo {
public static void main(String[] args) {
Person[] personList = new Person[3];
personList[0] = new Person(10, "tom", "M");
personList[1] = new Person(13, "john", "F");
personList[2] = new Person(11, "jack", "M");
Arrays.sort(personList);
System.out.print("code" + "/t");
System.out.print("name" + "/t");
System.out.print("sex");
System.out.println();
for(int i=0; i<personList.length; i++){
Person person = personList[i];
System.out.print(person.getCode() + "/t");
System.out.print(person.getName() + "/t");
System.out.print(person.getSex());
System.out.println();
}
}
}
Person
public class Person implements Comparable{
private int code;
private String name;
private String sex;
public Person(int code, String name, String sex){
this.code = code;
this.name = name;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public int compareTo(Object object) {
Person anthorPerson = (Person)object;
return this.code - anthorPerson.getCode();
}
}