为什么要实现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认为它们是一样的,而后者执不同观点。
由于compareTo返回值要么为正、要么为负,要么是0,因此可以对compareTo方法作一些调整以减少计算量和代码量。另外涉及到任何2个数之间的操作都需要考虑overflow 和underflow的问题
分享到:
相关推荐
一般来说,任何实现 Comparable 接口和违背此条件的类都应该清楚地指出这一事实。推荐如此阐述:“注意:此类具有与 equals 不一致的自然排序。” 参数: o - 要比较的对象。 返回: 负整数、零或正整数,根据此...
主要介绍了java 实现Comparable接口排序,升序、降序、倒叙,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
通过简单的例子初步了解Comparable和Comparator的使用,注释很详细
java通过Comparable接口实现字符串比较大小排序的简单实例
下面小编就为大家带来一篇java中实现Comparable接口实现自定义排序的示例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
【IT十八掌徐培成】Java基础第12天-02.TreeSet实现与Comparable接口.zip
comparator接口与Comparable接口的区别
Java8HashMap键与Comparable接口编程开发技术共3页.pdf.zip
当且仅当要使用的对象实现Comparable接口时,我们也可以创建不带Comparator对象的SortedList。 用法 我们将像创建Java中的任何ArrayList一样创建SortedList: SortedList sortedlist = new SortedList(comparator); ...
本文要来详细分析一下Java中Comparable和Comparator接口的区别,两者都有比较的功能,那么究竟有什么区别呢,感兴趣的Java开发者继续看下去吧
java排序Comparator和Comparable
031707_【第17章:Java数据库编程】_PreparedStatement接口笔记.pdf 031708_【第17章:Java数据库编程】_处理大数据对象(1)—处理CLOB数据笔记.pdf 031709_【第17章:Java数据库编程】_处理大数据对象(2)—处理...
Java集合框架汇总 1.集合框架结构图 1 2.两种特殊的Java容器类List和Set分析 2 3. Collection 接口: 2 4.Iterator 接口: 3 5.List接口: 3 ...8.Comparable接口和Comparator接口: 7 9. 集合框架面试题 7
本篇文章是对java比较器Comparable接口与Comaprator接口进行了详细的分析介绍,需要的朋友参考下
计算机后端-Java-Java核心基础-第22章 常用类 22. 自定义类实现Comparable自然排序.avi
java.lang.Comparable和java.util.Comparator是两个容易混淆的接口,两者都带有比较的意思,那么两个接口到底有什么区别,分别在什么情况下使用呢? Comparable Comparable是java.lang包下面的接口,lang包下面可以...
实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。 此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。 此 接口只有一个方法...
Java-中的-Comparator-和-Comparable.md