JAVA中用于对象排序的比较器Comparable接口和compareTo()方法

来源:互联网 发布:ebsco数据库怎么下载 编辑:程序博客网 时间:2024/05/12 19:44

面向对象的三大特性:封装,继承,多态。

JAVA中的比较器接口Comparable用于数组对象的排序,要使用此功能,必须让类继承自Comparable接口,重写compareTo(Object obj)方法。

import java.util.*;

class Person implements Comparable{
private String name;
private int age;
private float score;
public Person(String name,int age,float score){
   this.name=name;
   this.age=age;
   this.score=score;
   }
   public String toString(){
    return "姓名:"+this.name+", 年龄:"+this.age+", 成绩:"+this.score;
    }
    public int compareTo(Object obj){
     Person p = (Person)obj;
     if(p.score>this.score){
      return 1;
      }
      else if(p.score<this.score){
       return -1;
       }
       else{
        if(p.age>this.age){
         return 1;
         }
         else if(p.age<this.age){
         return -1;
        }
         else{
          return 0;
          }
        }
     }
}
public class OODemo35{
   public static void main(String []args){
    Person p[] = new Person[5];
    p[0] = new Person("张三 ",23,96);
    p[1] = new Person("张三2",24,96);
    p[2] = new Person("张三3",21,94);
    p[3] = new Person("张三4",22,98);
    p[4] = new Person("张三5",20,89);
   
    Arrays.sort(p);
    for(int x=0;x<p.length;x++){
     System.out.println(p[x]);
     }   
    }
   }

输出结果:

姓名:张三4, 年龄:22, 成绩:98.0
姓名:张三2, 年龄:24, 成绩:96.0
姓名:张三 , 年龄:23, 成绩:96.0
姓名:张三3, 年龄:21, 成绩:94.0
姓名:张三5, 年龄:20, 成绩:89.0

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 驾考学员证丢了怎么办 违章扣满12分怎么办 违章扣满12分后怎么办 东方时尚驾校科二考不过怎么办 东方时尚科二科三考五次没过怎么办 不想考科目三了怎么办 科目三两次没过怎么办 练科目三很紧张怎么办 驾照学员卡丢了怎么办 驾考时考试的车系统出错怎么办 驾驶证超期6个月怎么办 北京汽车年检只有电子保单怎么办 交电费户号9位数怎么办 扬州驾照12分扣完了怎么办 有大专毕业证在深圳怎么办居住证 微信解释包错误怎么办 富士康离职不批怎么办 到了怀孕年龄找不到工作怎么办 建筑公司挂靠发生人员伤残怎么办 外地生小孩落北京户口怎么办 户籍档案查不到直系亲属关系怎么办 考过了二建注册怎么办 异地工作辞职回家档案怎么办 离职怎么办档案放在人才市场 人才房住了6年后怎么办 医保辞职后断了怎么办 社保断了生育险怎么办 深圳小产权房水电费纠纷怎么办 有公租房的再婚怎么办 廉租房被没收了怎么办 商铺到期房东不续租怎么办 天津集体户口买不起房怎么办 房东不想续租了怎么办 唯一住房卖掉后户口怎么办 杭州唯一住房卖掉后户口怎么办 唯一一套住房卖掉户口怎么办 房租押金条丢了怎么办 二建证书跟毕业证丢失怎么办 住宅房到70年怎么办 护照号变了机票怎么办 苹果se指纹坏了怎么办