编写学生类Student,包含学号、姓名和成绩三个成员变量,设计成绩比较器,实现Comparator接口。编写测试类,使用Arrays类的带两个参数的sort方法对一组学生按成绩降序排序。(提示:随机产生100个学生对象)
时间: 2024-01-22 10:19:41 浏览: 92
以下是代码示例:
```
import java.util.Arrays;
import java.util.Comparator;
import java.util.Random;
public class Student implements Comparator<Student> {
private int id;
private String name;
private double score;
public Student(int id, String name, double score) {
this.id = id;
this.name = name;
this.score = score;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public double getScore() {
return score;
}
@Override
public int compare(Student s1, Student s2) {
return Double.compare(s2.getScore(), s1.getScore());
}
public static void main(String[] args) {
Student[] students = new Student[100];
Random random = new Random();
for (int i = 0; i < students.length; i++) {
int id = i + 1;
String name = "Student " + id;
double score = random.nextDouble() * 100;
students[i] = new Student(id, name, score);
}
Arrays.sort(students, new Student());
for (Student student : students) {
System.out.println(student.getId() + " " + student.getName() + " " + student.getScore());
}
}
}
```
在这个示例中,我们定义了一个Student类,它实现了Comparator接口。我们还提供了一个compare()方法,该方法将两个学生对象作为参数,并比较它们的成绩。这个方法返回一个整数,如果第一个学生的成绩比第二个学生的成绩高,则返回正整数,否则返回负整数。
我们还提供了一个main()方法,该方法创建了100个随机学生对象,并使用Arrays类的sort()方法按成绩降序对它们进行排序。最后,我们遍历排序后的学生数组,并打印每个学生的学号、姓名和成绩。
阅读全文