Java常用类——比较器

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){
        ...
    }
});
posted @ 2021-01-16 16:41  一天到晚睡觉的鱼  阅读(101)  评论(0)    收藏  举报