版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 职业健康促进公平性与可持续发展策略-1
- 职业健康与员工职业发展路径的医学伦理考量
- 西安2025年陕西西安信息职业大学教职工招聘笔试历年参考题库附带答案详解
- 肇庆2025年广东肇庆市招聘村助理204人笔试历年参考题库附带答案详解
- 玉溪2025年云南玉溪易门县面向县外选调教师笔试历年参考题库附带答案详解
- 深圳广东深圳市第七高级中学招聘专任教师及教辅人员笔试历年参考题库附带答案详解
- 河源2025年秋季广东河源紫金县招聘教师218人笔试历年参考题库附带答案详解
- 柳州2025年广西柳州市鱼峰区招聘中小学教师8人笔试历年参考题库附带答案详解
- 新乡2025年河南新乡市市直部分事业单位招聘教师256人笔试历年参考题库附带答案详解
- 徐州2025年江苏徐州沛县职业教育学校招聘编制教师20人笔试历年参考题库附带答案详解
- 护理翻身叩背课件
- 施工合作协议书
- 630KVA箱变安装工程施工设计方案
- 山西省金科新未来2024-2025学年高一上学期期末考试化学试题(含答案)
- 第四届全国仪器仪表行业职业技能竞赛-无人机装调检修工(仪器仪表检测)理论考试题库(含答案)
- 国家职业技术技能标准 4-10-01-05 养老护理员 人社厅发201992号
- 急性梗阻性化脓性胆管炎护理
- 2024深海矿产资源开采系统技术指南
- 2022通达经营性物业贷调查报告
- 立式气液分离器计算
- 财务每日工作汇报表格
评论
0/150
提交评论