Comparable<T>

public class Student implements Comparable<Student> {
    private String name = "";
    private int score = 0;

    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    @Override
    public int compareTo(Student o) {
        return this.score - o.score;
    }
}
import java.util.Arrays;

public class TestMain {
    public static void main(String[] args) {
        Student st1 = new Student("st1", 85);
        Student st2 = new Student("st2", 80);
        Student st3 = new Student("st3", 90);

        Student[] stList = new Student[3];
        stList[0] = st1;
        stList[1] = st2;
        stList[2] = st3;
        Arrays.sort(stList);
        for (Student st : stList) {
            System.out.println(st.getScore());
            System.out.println(st.getName());
        }
    }
}
80
st2
85
st1
90
st3

如果没有实现 Comparable<T> 则会报错

Exception in thread "main" java.lang.ClassCastException: com.busy.Student cannot be cast to java.lang.Comparable
	at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:320)
	at java.util.ComparableTimSort.sort(ComparableTimSort.java:188)
	at java.util.Arrays.sort(Arrays.java:1246)
	at com.busy.TestMain.main(TestMain.java:15)

Process finished with exit code 1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值