为什么要实现Comparable接口?
实现了Comparable接口的类具有内在的排序关系,同时也可以和许多泛型算法和依赖于该接口的集合实现进行协助。
如何实现Comparable接口?
和Item 8中关于实现equal方法类似,同样需要满足:
传递性--x.compreTo(y) > 0 && y.compareTo(z) > 0 可以推出x.compareTo(z) > 0
改进的对称性--x.compareTo(y) == 0可以推出sgn(x.compareTo(z)) == sgn(y.compareTo(z))
(可选)等同性--x.compareTo(y) == 0就等同于x.equals(y)
与equal方法不同的地方在于不同类之间的compareTo可以直接抛出异常。
关于等同性需要说明的一点是,如果不满足,由于不同的container加载元素采用的比较方法不同,将导致不同的结果,比如TressSet用compareTo方法,HashSet用equals方法,此时加入“1.0”和“1.00”两个元素时,TreeSet认为它们是一样的,而后者执不同观点。