第12条 深虑实现Comparable接口

Comparable接口,此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort (和 Arrays.sort )进行自动排序。实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。 

如果一个类实现了Comparable接口,就表明他的实例具有内在的排序关系。

public interface Comparable<T>{
    int compareTo(T t);
}

compareTo方法的通用约定与equals方法想似:

1:比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

2:如果由于指定对象的类型而无法与该对象进行比较(如果两个被比较的对象引用不同类的对象),则抛出ClassCastException异常。

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接口,这是常用的模式。

public class PhoneNumber implements  Comparable<PhoneNumber> {
}



你可能感兴趣的:(第12条 深虑实现Comparable接口)