Java常用类——比较器
自然排序:java.lang.Comparable
- 实现Comparable接口中的int compareTo(Object o)方法,this大于形参返回正整数,小于返回负整数,相等返回0
- 实现Comparable接口的类,其组成的列表和数组可以通过Collection.sort或Arrays.sort排序
- 自然排序最好与equals一致
@override
public int compareTo(Object o){
//判断类型加强制转换
if(o instanceof MyClass){
MyClass myClass = (MyClass)o;
...
}
throw RuntimeException("传入的数据类型不一致!");
}
定制排序:java.util.Comparator
- 重写Comparator的compare(Object o1, Object o2)方法,o1大于o2返回正整数,小于返回负整数,相等返回0
- 将Comparator传递给sort实现顺序控制
- 当元素类型没有实现Comparable接口,或者想要修改排序规则时使用定制排序
- 通常写成匿名类
Array.sort(arr, new Comparator(){
@override
public int compare(Object o1, Object o2){
//同样需要判断类型加强制转换
}
});
//或者用泛型
Array.sort(arr, new Comparator<MyClass>(){
@override
public int compare(MyClass o1, MyClass o2){
...
}
});