目录
Java有两种实现对象排序的方式
一、自然排序:java.lang.Comparable(用于类的内部实现)
二、定制排序:java.util.Comparator(用于类的外部实现)
三、Comparable和Comparator的区别
声明的位置不同
使用的位置不同
Java有两种实现对象排序的方式
一、自然排序:java.lang.Comparable(用于类的内部实现)
实现这个接口,表示这个类的实例可以比较大小,可以进行自然排序。
实现Comparable的类必须实现compareTo(Object obj)方法。
两个对象通过compareTo(Object obj)方法的返回值来比较大小。
如果当前对象this大于形参对象obj,则返回正整数,如果当前对象this小于形参对象obj,则返回负整数,如果当前对象this等于形参对象obj,则返回零。
Comparable的实现尽量与equals()的结果一致。即如果comparTo(Object obj)返回0,那么equals()就应该返回true。
实现Comparable接口的对象列表(和数组)可以通过Collections.sort或Arrays.sort进行自动排序。
二、定制排序:java.util.Comparator(用于类的外部实现)
当没有实现java.lang.Comparable接口而又不方便修改代码,或实现java.lang.Comparable接口的排序规则不适合当前操作时,可以使用Comparator的对象来排序,对多个对象进行整体排序的比较。
两个对象通过compare(Object o1,Object o2)方法的返回值来比较大小。
如果当前对象this大于形参对象obj,则返回正整数,如果当前对象this小于形参对象obj,则返回负整数,如果当前对象this等于形参对象obj,则返回零。
三、Comparable和Comparator的区别
声明的位置不同
Comparable:java.lang.Comparable
Comparator:java.util.Comparator
使用的位置不同
Comparable:实体类内部实现
Comparator:实体类外部实现



