用Comparele<T>接口或Comparator<T>接口实现分数排序
时间: 2024-03-22 13:37:36 浏览: 18
好的,下面是使用`Comparator`接口实现分数排序的示例代码:
假设有一个`Student`类,其中包含学生的姓名和分数信息:
```java
public class Student {
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
}
```
现在,我们可以使用`Comparator`接口来实现按照分数从高到低排序。示例代码如下:
```java
import java.util.*;
public class ScoreSorter {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 90));
students.add(new Student("Bob", 80));
students.add(new Student("Charlie", 70));
students.add(new Student("David", 85));
// 使用 Comparator 接口实现分数排序
Collections.sort(students, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s2.getScore() - s1.getScore();
}
});
// 输出排序结果
for (Student student : students) {
System.out.println(student.getName() + " : " + student.getScore());
}
}
}
```
在上面的代码中,我们使用`Collections.sort`方法对学生列表进行排序,第二个参数传入一个实现了`Comparator`接口的匿名内部类。在该匿名内部类中,我们实现了`compare`方法来比较两个学生的分数大小,从而实现分数从高到低排序。
注意,这里的`compare`方法返回的是正数、负数或0,用于表示两个元素的相对大小关系。如果返回正数,表示`s2`大于`s1`;如果返回负数,表示`s1`大于`s2`;如果返回0,表示`s1`和`s2`相等。