版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届人体的内环境与稳态一轮复习
- 作文学写一种植物君子兰
- 2026年python试题库(含答案)
- 2026年药店入职测评模拟试题及答案详解
- 2026年输血知识培训试题(含答案)
- 2026年自动测试系统模拟试题及答案详解
- 功能社区健康管理模式
- 2026年头孢类药物模拟试题及答案详解
- 建筑改造2026年验收模拟试题及答案详解
- 基础会计第一次研讨
- 排水沟施工合同
- 国聘社会招聘笔试测评题库
- 【2026】年部编版道德与法治新教材二年级上册全册教案(共4个单元含教学计划)
- 2026大米包装设计创新与品牌价值提升研究报告
- 2026年中国华电集团招聘机械设计制造及其自动化题
- 中华民族共同体课件
- 高中英语3500词(带音标2026新高考版)
- 物业公司小区消防应急预案
- 电力系统分析试卷及答案
- 2025药品信息化追溯体系建设及数据共享与合规性研究
- 2025年大唐集团招聘笔试试题及答案
评论
0/150
提交评论