分别用Comparable和Comparator两个接口对下列四位同学的成绩做降序排序,如果成绩一样, 那在成绩排序的基础上按照年龄由小到大排序。 姓名(String

代码

import java.util.*;

/*3.分别用Comparable和Comparator两个接口对下列四位同学的成绩做降序排序,如果成绩一样,
        那在成绩排序的基础上按照年龄由小到大排序。

        姓名(String)年龄(int)分数(float)
        liusan			20				90.0F
        lisi				22				90.0F
        wangwu			20				99.0F
        sunliu			22				100.0F

        编写一个Student类用来实现Comparable<Student>接口,并在其中重写CompareTo(Student o)方法 
        在主函数中使用Comparable 与 Comparetor分别对ArrayList进行排序.*/
public class Homework3 {
    public static void main(String[] args) {
        List<Student> list = new ArrayList<>();
        list.add(new Student("liusan", 20, 90));
        list.add(new Student("lisi", 22, 90));
        list.add(new Student("wangwu", 20, 99));
        list.add(new Student("sunliu", 22, 100));

        Collections.sort(list, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o
假设四位同学成绩年龄分别为: 同学A:成绩90分,年龄20岁 同学B:成绩85分,年龄19岁 同学C:成绩90分,年龄22岁 同学D:成绩80分,年龄21岁 使用Comparable接口进行排序,需要让学生类实现Comparable接口,重写compareTo方法,按照成绩从高到低排序,如果成绩相同再按照年龄从小到大排序。代码如下: ```java public class Student implements Comparable<Student> { private int score; private int age; public Student(int score, int age) { this.score = score; this.age = age; } public int getScore() { return score; } public int getAge() { return age; } @Override public int compareTo(Student o) { // 先按成绩降序排序 int diff = o.getScore() - this.getScore(); if (diff != 0) { return diff; } // 如果成绩相同再按年龄升序排序 return this.getAge() - o.getAge(); } } ``` 使用Comparator接口进行排序,需要编写一个Comparator的实现类,实现compare方法,按照成绩从高到低排序,如果成绩相同再按照年龄从小到大排序。代码如下: ```java public class StudentComparator implements Comparator<Student> { @Override public int compare(Student o1, Student o2) { // 先按成绩降序排序 int diff = o2.getScore() - o1.getScore(); if (diff != 0) { return diff; } // 如果成绩相同再按年龄升序排序 return o1.getAge() - o2.getAge(); } } ``` 然后可以使用Arrays.sort方法或者Collections.sort方法进行排序,示例代码如下: ```java // 使用Comparable接口进行排序 Student[] students = new Student[] { new Student(90, 20), new Student(85, 19), new Student(90, 22), new Student(80, 21) }; Arrays.sort(students); for (Student student : students) { System.out.println(student.getScore() + " " + student.getAge()); } // 使用Comparator接口进行排序 List<Student> studentList = Arrays.asList( new Student(90, 20), new Student(85, 19), new Student(90, 22), new Student(80, 21) ); Collections.sort(studentList, new StudentComparator()); for (Student student : studentList) { System.out.println(student.getScore() + " " + student.getAge()); } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值