编写学生类Student,包含学号、姓名和成绩三个成员变量,设计成绩比较器,实现Comparator接口。编写测试类,使用Arrays类的带两个参数的sort方法对一组学生按成绩降序排序。(提示:随机产生100个学生对象)
时间: 2024-02-11 22:04:05 浏览: 23
好的,我来为您解答这个问题。
首先,我们需要定义一个学生类Student,包含学号、姓名和成绩三个成员变量,并且提供相应的构造方法和getter/setter方法。代码如下:
```java
public class Student {
private String id; // 学号
private String name; // 姓名
private int score; // 成绩
public Student(String id, String name, int score) {
this.id = id;
this.name = name;
this.score = score;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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;
}
}
```
接下来,我们需要设计一个成绩比较器,实现Comparator接口。代码如下:
```java
import java.util.Comparator;
public class ScoreComparator implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
return s2.getScore() - s1.getScore(); // 按成绩降序排序
}
}
```
最后,我们需要编写一个测试类,使用Arrays类的带两个参数的sort方法对一组学生按成绩降序排序。代码如下:
```java
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
Student[] students = new Student[100]; // 随机产生100个学生对象
for (int i = 0; i < students.length; i++) {
students[i] = new Student(String.valueOf(i + 1), "学生" + (i + 1), (int) (Math.random() * 101));
}
System.out.println("排序前:");
for (Student student : students) {
System.out.println(student.getId() + " " + student.getName() + " " + student.getScore());
}
Arrays.sort(students, new ScoreComparator()); // 按成绩降序排序
System.out.println("排序后:");
for (Student student : students) {
System.out.println(student.getId() + " " + student.getName() + " " + student.getScore());
}
}
}
```
运行以上代码,即可得到按成绩降序排序后的学生列表。