(1.44)-07-04Comparable接口编程基础_第1页
(1.44)-07-04Comparable接口编程基础_第2页
(1.44)-07-04Comparable接口编程基础_第3页
(1.44)-07-04Comparable接口编程基础_第4页
(1.44)-07-04Comparable接口编程基础_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论