Comparable和Comparator:比较器接口。
Comparable:内部比较器
如果一个类的对象数组需要排序,均需实现此接口,然后在类中重写comparaTo(Object other)方法,这样可以使用 Arrays.sort(T[] objects)进行对象数组的排序。
class Person implements Comparable<Person>{
//其他略
@Override
public int compareTo(Person o) {
return this.age - o.age;
}
}
Comparator:外部比较器
Comparator属于一种补救或者整改方法,一些类如果没有实现Comparable接口;或者实现的排库规则不是我们需要的,可以在外部重新定义排序规则:
Arrays类中静态方法 public static <T> void sort(T[] a, Comparator<? super T> c)
//Comparator为函数式接口,使用lambda表达式
//类没有排序接口,在外部实现从小到大
Arrays.sort( objects, ( a , b ) -> a - b)
//类有排序接口,在外部实现排序的从大到小重排序规则
Arrays.sort( objects, ( a , b ) -> b - a)