首页 理论教育 Java程序设计-实现Comparable接口

Java程序设计-实现Comparable接口

时间:2023-11-01 理论教育 版权反馈
【摘要】:如果一个类实现了Comparable接口,那么该类的对象就定义了对象自然排序的规则,可以比较大小。在JDK 1.5之后,Comparable接口声明如下:这里的<T>表示使用了泛型。在JDK 1.5之前,Comparable接口声明如下:compare To方法的参数o是Object类型的,该引用可以指向任何对象。Comparable接口的compareTo方法用于判断此对象与指定对象o的顺序,如果此对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。图4-34演示compareTo方法实现Comparable接口的对象列表(和数组)可以通过Collections.sort进行自动排序。

Java程序设计-实现Comparable接口

我们对很多同类型的对象都有比较大小的需求,要实现这个功能,这两个对象必须是可比较的,为此Java提供了java.lang.Comparable接口。如果一个类实现了Comparable接口,那么该类的对象就定义了对象自然排序的规则,可以比较大小。

在JDK 1.5之后,Comparable接口声明如下:

这里的<T>表示使用了泛型。泛型,即“参数化类型”,顾名思义,就是将类型由原来具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用时传入具体的类型(类型实参)。

泛型是JDK 1.5之后引入的新特性。泛型的本质就是“数据类型的参数化”,可以理解为数据类型的一个占位符,告诉编译器,在使用泛型时必须传入实际的类型替换。JDK支持泛型类、泛型接口和泛型方法,使用时开发人员需要指定真实的数据类型,将运行时的类型检查提前到编译阶段,提高了类型的安全性。

在JDK 1.5之前,Comparable接口声明如下:

compare To方法的参数o是Object类型的,该引用可以指向任何对象。但是,如果一个对象调用该方法,而接收一个风马牛不相及的对象进行比较,这样的代码可以通过编译,但在运行时发现接收的对象类型不合适,两者无法比较。因此,JDK 1.5后采用泛型,限定传入的对象类型。

Comparable接口的compareTo方法用于判断此对象与指定对象o的顺序,如果此对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

【例4-14】(www.xing528.com)

定义一个Its Triangle2类,同时实现ItsGraph接口和Comparable接口。

Its Triangle2类的源代码如图4-33所示。

图4-33 ItsTriangle2类

显然,本例Its Triangle2类的compare To方法中比较的是它们的面积。当然,也可以根据需要制定其他的比较规则,例如比较它们的周长

下面通过一个测试类Its Triangle Test2来演示实现了Comparable接口的类的对象比较功能,如图4-34所示。

图4-34 演示compareTo方法

实现Comparable接口的对象列表(和数组)可以通过Collections.sort(和Arrays.sort)进行自动排序。强烈推荐使compareTo与equals保持一致,即对于某一个类的两个对象e1和e2来说,应当确保e1.compareTo(e2)==0与e1.equals(e2)具有相同的布尔值。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈