Comparable接口,此接口强行对实现它的每一个类的对象进行总体排序。此排序被称为该类的天然排序 ,类的 compareTo 方法被称为它的天然比较方法 。实现此接口的对象列表(和数组)能够经过 Collections.sort (和 Arrays.sort )进行自动排序。实现此接口的对象能够用做有序映射表中的键或有序集合中的元素,无需指定比较器。 java
若是一个类实现了Comparable接口,就代表他的实例具备内在的排序关系。数组
public interface Comparable<T>{ int compareTo(T t); }
compareTo方法的通用约定与equals方法想似:ide
1:比较此对象与指定对象的顺序。若是该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。spa
2:若是因为指定对象的类型而没法与该对象进行比较(若是两个被比较的对象引用不一样类的对象),则抛出ClassCastException异常。code
3:Comparable接口是参数化的,并且compareTo方法时静态类型的,所以没必要进行类型检查,也没必要对它的参数进行类型转。若是参数类型不合适,这个调用甚至没法编译。对象
若是一个域并无实现Comparable接口,或者你须要一个非标准化的排序关系,就可使用一个显式的Comparator接口来代替。排序
Collections.sort(Lists, new Comparator<WkInvest>() { @Override public int compare(Object o1, Object o2) { return o1.getId.compareTo(o2.getId()); } });
通常来讲,接口
在须要排序时,声明的类要去实现Comparable接口,这是经常使用的模式。get
public class PhoneNumber implements Comparable<PhoneNumber> { }