第12条 深虑实现Comparable接口

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> {
}
相关文章
相关标签/搜索