Comparable 接口
11.13.1比较器的基本应用
具 体 的 应 用 。 例 如 , 现 在 要 求 设 计 一 个 学 生 类 , 此 类 包 含 姓 名
、 年 龄
、 成 绩
, 并 产 生 一 个 对 象 数 组 , 要 求 按 成 绩 由 高 到 低 排 序
, 如 果 成 绩 相 等 , 则 按 年 龄 由 低 到 高 排 序
。 如 果直接编写排序操作,则会比较麻烦,所以此时来观察如何使用Arr a y s
类中的s o rt()
方法进行排序操作。
【例11.39】使用比较器进行排序操作
package jiaqi;
import java.util.Arrays;
class Student implements Comparable<Student>
{
private int age;
private String name;
private double score;
public Student(String name,int age,double score)
{
this.name = name;
this.age = age;
this.score = score;
}
public String toString()
{
return "name:"+this.name+"\t"+"age:"+this.age+"\t"+"score:"+this.score;
}
@Override
public int compareTo(Student stu)
{
if(this.score > stu.score)
{
return -1;
}
else if(this.score < stu.score)
{
return 1;
}
else
{
if(this.age < stu.age)
{
return -1;
}
else if(this.age > stu.age)
{
return 1;
}
else
{
return 0;
}
}
}
}
public class demo351_1
{
public static void main(String[] args)
{
// TODO 自动生成的方法存根
System.out.println("test sort_age");
Student stu1[] = {
new Student("111", 9, 35),
new Student("222", 18,35),
new Student("333", 12, 35),
new Student("444", 15, 35),
new Student("555", 1, 35),
};
Arrays.sort(stu1);
for(int i = 0;i < stu1.length ;i ++ )
{
System.out.println(stu1[i]);
}
System.out.println("test sort_score");
Student stu2[] = {
new Student("111", 9,89),
new Student("222", 9,99),
new Student("333", 9,35),
new Student("444", 9,66),
new Student("555", 9,3),
};
Arrays.sort(stu2);
for(int i = 0;i < stu2.length ;i ++ )
{
System.out.println(stu2[i]);
}
}
}