Person.java:
package review;
public class Person implements Comparable<Person> {
@Override
public int compareTo(Person o) {
// TODO Auto-generated method stub
return age - o.getAge();
}
private int age;
private String name;
public Person(int age, String name) {
super();
this.age = age;
this.name = name;
}
@Override
public String toString() {
return "Person [age=" + age + ", name=" + name + "]";
}
public Person() {
super();
// TODO Auto-generated constructor stub
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Student.java:
package review;
public class Student extends Person {
public Student(int age, String name) {
super(age, name);
}
}
MyComparator.java
package review;
import java.util.Comparator;
//应该明确比较器操作的类型
public class MyComparator implements Comparator<Person> {
// 复写
public int compare(Person a, Person b) {
return a.getAge() - b.getAge();
}
}
Test.java
package review;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test {
public static void main(String[] args) {
// 存储复合数据类型
List<Person> persons = new ArrayList<>();
List<Student> students = new ArrayList<>();
persons.add(new Person(12, "Mary "));
persons.add(new Person(13, "Smith"));
persons.add(new Person(11, "David"));
students.add(new Student(18, "亮亮 "));
students.add(new Student(19, "花花 "));
students.add(new Student(17, "豆豆 "));
System.out.println("P-unsorted:" + persons);
System.out.println("S-unsorted:" + students + "\n");
// 排序之前父类Person应该实现Comparable接口并且复写CompareTo方法
Collections.sort(persons);
Collections.sort(students);
System.out.println("P-sorted-Comparable:" + persons);
System.out.println("S-sorted-Comparable:" + students + "\n");
// 排序之前要有一个新的比较器继承实现Comparator,并且复写compare函数
Collections.sort(persons, new MyComparator());
Collections.sort(students, new MyComparator());
System.out.println("P-sorted-Comparator:" + persons);
System.out.println("S-sorted-Comparator:" + students + "\n");
}
}
结果: