利用compareTo方法进行对象排序

  • Comparable是一个接口,里面只有一个compareTo方法,参数是泛型;
  • 利用compareTo方法进行对象排序,首先该对象类要实现Comparable接口,然后再根据实际排序要求来重写compareTo方法。
  • 例如:有一个Student类,里面属性有姓名、年龄、成绩,按照成绩由高到低排序,如果成绩相等,再通过年龄由小到大排序,如果成绩、年龄都相等,再通过姓名进行排序。
    /**
     * 设计一个学生类,包含姓名、年龄、成绩
     */
    public class Student implements Comparable<Student>{//实现Comparable接口
        private String name;
        private int age;
        private double score;
        public Student(String name, int age, double score) {
            this.name = name;
            this.age = age;
            this.score = score;
        }
    
        @Override
        public int compareTo(Student student) {
            if (this.getScore() < student.getScore()) {
                return 1;
            }else if (this.getScore() > student.getScore()) {
                return -1;
            }else {
                    if(this.getAge() == student.getAge()) {
                        if(this.getName().compareTo(student.getName())==0) {
                            return 0;
                        }else if(this.getName().compareTo(student.getName())>0) {
                            return 1;
                        }else{
                            return -1;
                        }
                    }else if(this.getAge() > student.getAge()) {
                        return 1;
                    }else{
                        return -1;
                    }
            }
        }
    
        public String toString(){
            return name + " " + age + " " + score;
        }
        public int getAge() {
            return age;
        }
    
        public double getScore() {
            return score;
        }
    
        public void setScore(double score) {
            this.score = score;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    public class TestComparable {
        public static void main(String[] args) {
            Student a1 = new Student("张晓雪",20,86);
            Student a2 = new Student("李璐",20,83);
            Student a3 = new Student("韩阳",21,83);
            Student a4 = new Student("程清",21,83);
            // 上述学生进行排序,放置到一个数组里面
            Student[] students = new Student[]{a1,a2,a3,a4};
            Arrays.sort(students); // 排序
            for (Student s : students) {
                System.out.println(s);
            }
        }
    }

    执行结果:

    张晓雪 20 86.0
    李璐 20 83.0
    程清 21 83.0
    韩阳 21 83.0

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值