与前面讨论的方法不同,compareTo()方法并没有在Object类中定义。相反,它是Comparable接口中唯一的方法。
一个类的实例对象要想是可以比较大小的,那么这个类需要实现Comparable接口,必须正确的实现compareTo()方法。
一个类实现了Comparable接口,就表明这个类的实例对象具有内在的排序关系。
一旦类实现了Comparable接口,那么这个类就可以和依赖于该接口的集合实现进行协作,实现强大的功能。
JDK中的所有值类,String类都已经实现了Comparable接口。
comparaTo()方法的通用约定和equals()方法的有些相似:
大于返回1,相等返回0,小于返回-1
如果A.compareTo(B) 返回1,则B.compareTo(A)返回-1
如果A.compareTo(B) 返回0,则B.compareTo(A)返回0
如果A.compareTo(B)返回1,B.compareTo(C)返回1,则A.compareTo(C)返回1
如果比较的参数对象B不是这个类的对象 ,则抛出ClassCastException异常。
假设这个实现Comparable接口的类具有如下的域:
基本类型的域,直接使用 > 和 <小于号比较,但是double,和float类型的域,使用Double.compare(value1,value2)和Float.compare(value1,value2)
基本类型的包装类的域 ,使用compareTo()方法 ,因为这些类已经实现了Comparable接口
引用类型的域,引用类型的类应该实现Comparable接口,然后调用compareTo()方法比较
如果这个类有若干个关键域,那么应该先比较最重要的那个域,然后比较次重要的那个域,依次。。。
第十二条:考虑实现Comparable接口的更多相关文章
-
[分享] IT天空的二十二条军规
Una 发表于 2014-9-19 20:25:06 https://www.itsk.com/thread-335975-1-1.html IT天空的二十二条军规 第一条.你不是什么都会,也不是什么 ...
-
ASP 三十二条精华代码 (1)
ASP 三十二条精华代码 (1) 2009-08-10 09:53:03 www.hackbase.com 来源:互联网 1. oncontextmenu="window.event.r ...
-
前端开发中SEO的十二条总结
一. 合理使用title, description, keywords二. 合理使用h1 - h6, h1标签的权重很高, 注意使用频率三. 列表代码使用ul, 重要文字使用strong标签四. 图片 ...
-
十二条Linux运维面试必备经典笔试/面试题
1.Linux设置环境变量 暂时的:export MYNAME="new name" echo $MYNAME new name 永久的:通过改变/etc/profile实现 EG ...
-
Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API
不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...
-
Java开发笔记(六十二)如何定义函数式接口
前面介绍了Lambda表达式的用法,从实践中发现它确实极大地方便了开发者,然而不管是匿名内部类还是Lambda表达式,所举的例子都离不开各类数组的排序方法,倘使Lambda表达式仅能用于sort方法, ...
-
值得收藏的十二条Jquery随身笔记
1.关于页面元素的引用 通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用do ...
-
mysql的十二条基本语句
在 mysql里,所有语句都以分号作为结束标志! 1.连接服务器 Mysql -u username -p passwd 2.当连上服务器后,首先面对的是库,库有1个或多个,因此我们想对表进行操作的话 ...
-
[Effective Java 读书笔记] 第三章 对所有对象都通用的方法 第十---十一条
第十条 始终覆盖toString() toString的实现可以使类使用起来更加舒适,在执行println等方法时打印出定制信息. 一单实现了自己的toString,指定输出的固定格式,在方法的文档说 ...
随机推荐
-
object.bind()方法的低版本兼容
Function.prototype.bind= function(obj){ var _self = this, args = arguments; return function() { _sel ...
-
元祖签约K2 BPM,引领绿色健康食品!
漫步街头,我们经常会被一些鲜艳的红色招牌所吸引,走进去会发现这里有一些普通西饼店不会卖的东西,比如红蛋.年糕.粽子.喜饼.等上海传统食品等......这就是元祖食品. 随着人们生活品质的不断提升,元祖 ...
-
Thinkphp将中文年份转换为数字年份的问题
今天遇到一个问题:想将中文年份转换为数字年份,例如:"二零一六"-->'2016'. 在网上搜了一下,没找到可以直接处理的函数(也许是我搜索信息的能力有限吧>_< ...
-
C#控件基础
在说控件之前,还是有必要说一下如何创建项目的. 现在我们就不用创建控制台应用程序了,而是文件>新建>C#>Windows窗体应用程序.名称,位置自己选择. 创建好了大致就是这样了,可 ...
-
python之路:列表及元组之定义
python开发之路:列表及元组之定义 列表是以后用处较大的一个数据类型,这种数据类型可以存储按组分类的信息.好了,我不多说,开始讲了! 好了,现在我有个情景,我要存东汉时期(韩国,秦国,……)所 ...
-
SpringBoot使用WebJars
本人主要做的是java,但是从第一份工作开始,就一直在做一个写前端又写后端的程序员,相信很多朋友和我一样,不仅要会后台代码,还要懂得很多的前端代码,例如javascipt和css样式. 本文就为大家简 ...
-
shp转oracle spatial
2010年12月1日 终于搞定了shp到oracle spatial,说下步骤和感受吧! 1 XP系统:转换工具的下载(shp2sdo.exe ):下载后把此文件复制到PATH变量包含的目录下(E: ...
-
4星|《流量池》:Luckin Coffee营销操盘手经验谈
流量池:“急功近利”的流量布局.营销转化 作者是一线营销操盘手,全书是作者的经验总结,这样的作者在营销类图书中比较罕见,因此这本书非常有价值. 全书是写给巨头之外的企业营销人员看的,这样的企业的流量来 ...
-
155. Minimum Depth of Binary Tree【LintCode by java】
Description Given a binary tree, find its minimum depth. The minimum depth is the number of nodes al ...
-
3809: Gty的二逼妹子序列
3809: Gty的二逼妹子序列 链接 分析: 和这道AHOI2013 作业差不多.权值是1~n的,所以对权值进行分块.$O(1)$修改,$O(\sqrt n)$查询. 代码: #include< ...