如何使用Comparable接口进行对象的比较?

#Richard

/*案例:创建一个Student类,成员变量包含姓名,学号,成绩,然后进行实例化对象
将对象按照成绩由高到低排序,如果成绩相同,则按照学号进行排序,学号小的排在前面以此类推
*/

#代码实现:

import java.util.Arrays;

/**

  • @author Richard
  • @date 2019/7/1 0001-21:01
    */

public class TestScoreOrder {
public static void main(String[] args) {
Student1 p01=new Student1(“张三”,2,98);
Student1 p02=new Student1(“李四”,12,88);
Student1 p03=new Student1(“王五”,8,98);
Student1[] students={p01,p02,p03};
sort(students);
System.out.println(Arrays.toString(students));
}
public static void sort(Student1[] arr) {
for (int i=0;i<arr.length;i++){
for (int j=0;j<arr.length-1-i;j++){
if (arr[j].compareTo(arr[j+1])>0){
Student1 temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}

}

}
class Student1 implements Comparable{
public String name;
public int id;
public int score;

public Student1(String name, int id, int score) {
    this.name = name;
    this.id = id;
    this.score = score;
}
public int compareTo(Student1 s){
    if(this.score<s.score){
        return 1;
    }else if (this.score>s.score){
        return -1;
    }
    else {
        if(this.id<s.id){
            return -1;
        }else if (this.id>s.id){
            return 1;
        }
    }
    return 0;
}
public String toString(){
    return "姓名:"+name+"" + "    "+"学号:"+id;
}

}

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值