【Java】比较器
在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题
Java实现对象排序的方式有自然排序和定制排序
自然排序java.lang.Comparable
- 像String、包装类等实现了Comparable接口,重写了CompareTo(obj)方法,给出了比较两个对象大小的方式,进行了从小到大的排列
- 对于自定义类需要排序的话,就要让自定义类实现Comparable接口,重写CompareTo方法
- 重写compareTo的规则
- 如果当前对象this大于形参对象obj,则返回正整数
- 如果当前对象this小于形参对象obj,则返回负整数
- 如果当前对象this等于形参对象obj,则返回零
定制排序java.util.Comparator
当元素类型没有实现java.lang.Comparable接口而又不方便修改代码,或者实现了java.lang.Comparable接口的排序规则不适合当前操作,就可以考虑使用Comparator对象来排序
- 重写Compare(Object o1, Object o2)方法,比较o1和o2的大小
返回整数则o1大于o2;返回负整数o1小于o2,返回0表示相等 - 例子
比较Comparable和Comparator
Comparable接口的方式一旦给定,保证Comparable接口实现类的对象在任何位置都可以比较大小(反复使用的筷子)
Comparator接口属于临时性的比较(一次性筷子)