java语言入门教程:comparable与comparator接口

java语言入门教程:comparable与comparator接口

ID:34723862

大小:48.19 KB

页数:3页

时间:2019-03-10

java语言入门教程:comparable与comparator接口_第1页
java语言入门教程:comparable与comparator接口_第2页
java语言入门教程:comparable与comparator接口_第3页
资源描述:

《java语言入门教程:comparable与comparator接口》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java语言入门教程(十七):Comparable与Comparator接口时间:2011-06-13csdn博客taomoon719-在实际开发中,我们常常需要对某些数据进行排序,这些数据往往使用数组或者集合保存。对于数组中的数据排序,API中提供了一个数组的工具类,java.util.Arrays,类中重载了大量的sort方法,可以对各种类型的数组进行排序。如对于Object类型数组排序有如下方法:publicstaticvoidsort(Object[]a)假设有类Course,如下:packagecom.csst.relation

2、;publicclassCourse{privateStringtitle;privatedoubleprice;publicCourse(Stringtitle,doubleprice){super();this.title=title;this.price=price;}publicCourse(Stringtitle){super();this.title=title;}publicCourse(){super();}publicStringgetTitle(){returntitle;}publicvoidsetTitle(Str

3、ingtitle){this.title=title;}publicdoublegetPrice(){returnprice;}publicvoidsetPrice(doubleprice){this.price=price;}}如果有一个Course类型的数组,需要排序,按照Arrays类的方法,仿佛只要将数组作为参数,传递给sort方法即可。但是只要我们深入考虑一下,就会发现问题。对于Course对象,所谓的顺序应该有个排序标准,比如,按照价格排,还是名称排?这个排序标准确定了,才能对多个Course对象排序。仔细阅读Arrays.s

4、ort方法的详细描述,会发现有一个要求,即使用该方法排序的对象,必须是Comparable类型的。Comparable是一个接口,只要Course类实现这个接口即可,覆盖其中的方法:publicintcompareTo(Objecto)假设,我们希望Course数组根据price排序,那么将Course类实现Comparable接口,覆盖compareTo方法:publicintcompareTo(Objectarg0){//TODOAuto-generatedmethodstubCoursec=(Course)arg0;if(this.

5、price>c.price){return1;}elseif(this.price>c.price){return-1;}else{return0;}}初学者可以借助这个例子,理解一下接口的作用。接口Comparable定义了所有需要使用sort方法排序的对象的共同行为,否则sort方法根本无法实现。如果Course数组可能根据价格排序,也可能需要根据名称排序,显然使用这个方法就有局限性,因为compareTo方法只可能实现一种比较逻辑。Arrays类中还有另外一种排序方法:publicstaticvoidsort(Object[]a,C

6、omparatorc)Comparator是另一个接口,其中有一个方法:publicintcompare(Objecto1,Objecto2)只要创建一个类,实现Comparator接口,实现compare方法,就可以进行排序,如下:packagecom.csst.relation;importjava.util.Comparator;publicclassPriceCompimplementsComparator{publicintcompare(Objectarg0,Objectarg1){//TODOAuto-generatedme

7、thodstubCoursec1=(Course)arg0;Coursec2=(Course)arg1;if(c1.getPrice()>c2.getPrice()){return1;}elseif(c1.getPrice()

8、接口即可。通过本篇的学习,初学者不仅能掌握数组排序的方法,更能对Comparable和Comparator接口比较熟悉。更进一步,还是建议能借此例子,理解接口的作用。-本文来自编程入门网:ht

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。