java中 完成查看成绩排名,将所有学生信息根据期末成绩由高到低进行排序,不可改变原有的学生信息排序
时间: 2024-09-20 11:06:33 浏览: 9
在Java中,如果你有一个包含学生成绩的类(比如`Student`),并且你想查看成绩排名而不改变原始学生的数组或列表的顺序,你可以使用`Collections.sort()`方法配合自定义的比较器`Comparator`。下面是一个简单的示例:
首先,假设`Student`类有这样的结构:
```java
public class Student {
String name;
int grade;
// 构造函数、getter和setter...
}
```
然后,你可以创建一个`Comparator`来按分数降序排列:
```java
import java.util.*;
class GradeDescendingComparator implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
return Integer.compare(s2.getGrade(), s1.getGrade()); // 高分优先
}
}
```
接着,在看成绩排名的地方,你可以这样做:
```java
public void viewRanking(List<Student> students) {
// 创建一个新的列表,用于存储排名结果
List<Student> rankedStudents = new ArrayList<>(students);
// 使用自定义比较器对排名列表进行排序
Collections.sort(rankedStudents, new GradeDescendingComparator());
// 打印或操作排名列表
for (int i = 0; i < rankedStudents.size(); i++) {
System.out.println((i + 1) + ". " + rankedStudents.get(i).getName() + ": " + rankedStudents.get(i).getGrade());
}
}
```
这样,你可以在不改变原始学生列表的情况下获取到成绩排名。注意,`Collections.sort()`改变了`rankedStudents`列表,而不是`students`列表。