原创---关于实现comparable接口的排序例子

 

 

Java 2java.lang中新增加了一个接口:Comparable。实现Comparable的类的对象可以被排序。换句话说,实现Comparable的类包含了可以按某种有意义的方式进行比较的对象。Comparable接口说明了一个方法,该方法用于确定Java 2调用一个类的实例的自然顺序。该方法如下所示: int compareTo(Object obj) 这个方法比较调用对象和obj。如果他们相等,就返回0。如果调用对象比obj小,则返回一个负值。否则返回一个正值。特别是ByteCharacterDoubleFloatLongShortString以及Integer类定义了compareTo( )方法。实现这个接口的对象可以被使用在不同的集合中。

 
要比较一个类,必须实现Comparable,并且重写compareTo方法。

 
现看一下该接口的定义:
要自己实现该接口,从 API看到该接口只有一个方法,
compareTo 的约定是:

将当前这个对象与指定的对象进行顺序比较,当该对象小于、等于或大于指定对象时,分别返回一个负整数、0或正整数,如果无法进行比较,则抛出ClassCastException异常。(泛型没有掌握,所以compareTo的参数用Object ,所以比较之前必须进行强制转换。如果学会了泛型就方便多了)。

 
   现在我们写个例子来实践一下,重写comparable接口的compareTo的方法,按照我们所定义的“规则”排序。

 
   Student类实现了Comparable接口并重写了compareTo的方法,代码如下:

 
Java代码
 
从重写的compareTo方法可以看出,排序“规则”是这样的:首先按照学生姓名排序,如果学生姓名相同的话,再按照学生年龄排序。

 
写一个测试类,测试一下,代码如下:
运行结果为:

 
name=DDD age=13

 
name=EEE age=12

 
name=FFF age=11

 
 

 
当学生姓名相同时,再按照学生的年龄排序,如果把测试类的三个例子改为:

 
      Student stu1 = new Student("EEE", 12);

 
       Student stu2 = new Student("EEE", 11);

 
       Student stu3 = new Student("DDD", 13);

 
则运行结果为:

 
   name=DDD age=13

 
name=EEE age=11

 
name=EEE age=12
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值