JAVA内置的比较器有两个,分别是Comparable
和Comparator
接口。
Comparable比较器
Comparable
可以理解为内部比较器,需要比较的类要实现Comparable
接口,不好的地方在于需要改变目标类。
public class Student implements Comparable<Student> {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(Student o) {
return this.age > o.age ? 1 : -1;
}
}
Comparator
Comparator
可以理解为外部比较器,目标类不需要做任何改动,但需要新建一个比较类实现Comparator
接口。使用该接口的好处是不需要改动源码,而且可以实现比较模版。
public class StudentComparator implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
if (o1.getAge() == o2.getAge()) {
return 0;
} else if (o1.getAge() == o2.getAge()) {
return 1;
} else {
return -1;
}
}
}