【Java】比较器


在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题
Java实现对象排序的方式有自然排序和定制排序

自然排序java.lang.Comparable

  1. 像String、包装类等实现了Comparable接口,重写了CompareTo(obj)方法,给出了比较两个对象大小的方式,进行了从小到大的排列
  2. 对于自定义类需要排序的话,就要让自定义类实现Comparable接口,重写CompareTo方法
  3. 重写compareTo的规则
  • 如果当前对象this大于形参对象obj,则返回正整数
  • 如果当前对象this小于形参对象obj,则返回负整数
  • 如果当前对象this等于形参对象obj,则返回零

定制排序java.util.Comparator

当元素类型没有实现java.lang.Comparable接口而又不方便修改代码,或者实现了java.lang.Comparable接口的排序规则不适合当前操作,就可以考虑使用Comparator对象来排序

  1. 重写Compare(Object o1, Object o2)方法,比较o1和o2的大小
    返回整数则o1大于o2;返回负整数o1小于o2,返回0表示相等
  2. 例子
    【Java】比较器

比较Comparable和Comparator

Comparable接口的方式一旦给定,保证Comparable接口实现类的对象在任何位置都可以比较大小(反复使用的筷子)
Comparator接口属于临时性的比较(一次性筷子)