




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Comparable接口主要内容Comparable接口compareTo()方法的重写案例——可比较的Rectangle的子类
假设要设计一个求两个相同类型对象中较大者的通用方法。这里的对象可以是两个学生、两个日期、两个圆、两个矩形或者两个正方形。为了实现这个方法,这两个对象必须是可比较的。因此,这两个对象都该有的共同方法就是comparable(可比较的)。
为此,Java提供了Comparable接口。接口的定义如下所示:packagejava.lang;publicinterfaceComparable<E>{ publicintcompareTo(Eo);}compareTo方法判断一个对象相对于给定对象o的顺序,并且当这个对象小于、等于或大于给定对象o时,分别返回负整数、0或正整数。
从上边的定义可以看到,
Comparable接口是一个泛型接口。在实现该接口时,泛型类型E被替换成一种具体的类型。Java类库中的许多类实现了Comparable接口以定义对象的自然顺序。JavaAPI中可比较的类所有的数值封装类(Byte、Short、Integer、Long、Float、Double、BigDecimal等)、Character类、String类、Calendar类以及Date类都实现了Comaparable接口,compareTo方法在这些类中都能执行。数字、字符串、日期的比较1System.out.println(newInteger(3).compareTo(newInteger(5)));2System.out.println("ABC".compareTo("ABE"));3java.util.Datedate1=newjava.util.Date(2013,1,1);4java.util.Datedate2=newjava.util.Date(2012,1,1);5System.out.println(pareTo(date2));输出
:-1,-2,1sort()方法
由于所有Comparable对象都有compareTo方法,如果对象是Comparable接口类型的实例,
JavaAPI中的java.util.Arrays.sort(Object[])方法就可以使用compareTo方法来对数组中的对象进行比较和排序。sort()方法实例
下面程序清单给出了一个对字符串数组和Biglnteger对象数组进行排序的示例:
importjava.math.*;
publicclassSortComparableObjects{
publicstaticvoidmain(String[]args){
String[]cities={“Savannah”,“Boston”,“Atlanta”,Tampa“};java.util.Arrays.sort(cities);
for(Stringcity:cities)System.out.print(city+
“”);System.out.println();Biglnteger[]lNums={newBiglnteger(“
2323231092923992”),newBigInteger(“432232323239292”),newBigInteger(“54623239292“))};java.util.Arrays.sort(lNums);for(Biglntegernumber:lNums)System.out.print(number+””);}}运行结果:AtlantaBostonSavannahTampa546232392924322323232392922323231092923992下面程序会出现运行错误:
publicclassTest{ publicstaticvoidmain(String[]args){Fruit[]fruits={newFruit(2),newFruit(3),newFruit(1)};
java.util.Arrays.sort(fruits);//第4行出现运行时错误}
}classFruit{ privatedoubleweight; publicFruit(doubleweight){ this.weight=weight;} }
不能使用sort方法来对一个Fruit对象数组进行排序,因为Fruit类没有实现接口Comparable。
然而,可以修改Fruit类实现
Comparable接口。
classFruitimplementsComparable<Fruit>{ privatedoubleweight; publicFruit(doubleweight){ this.weight=weight;}©Override
publicintcompareTo(Fruito){
if(weight>o.weight)return1;
elseif(weight<o.wei
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 区块链在艺术品收藏与拍卖中的应用考核试卷
- 产业链整合与产业政策协调机制研究考核试卷
- 家电新零售的智能售后服务平台构建考核试卷
- 移动端产品设计与用户体验优化考核试卷
- 农村社会安全与农村社会动员机制研究考核试卷
- 新疆法宣考试试题及答案
- 乡村工匠测试题及答案
- 华为上海java开发社招面试题及答案
- 城投控股笔试题及答案
- 通信安全员c类考试试题及答案
- 乡烤烟生产工作总结及工作打算
- 市政(道路)工程分部分项划分表
- 一次风压力控制系统
- 小组工作教案
- GB/T 21671-2018基于以太网技术的局域网(LAN)系统验收测试方法
- GB/T 11177-1989无机胶粘剂套接压缩剪切强度试验方法
- 钴领域:华友钴业企业组织结构及部门职责
- 内容参考zipc教程
- FZ/T 43022-2011莨绸工艺饰品
- 基金投资管理系统O32用户手册-股指期货套保系统
- 机械原理课程设计-自动打印机设计说明书
评论
0/150
提交评论