需要给一个运动会比赛系统写一个成绩排序,成绩有时间也有距离两类用java中重写compareto
时间: 2024-04-08 22:33:37 浏览: 63
运动会成绩管理系统(JAVA)
4星 · 用户满意度95%
当需要对成绩进行排序时,可以通过实现`Comparable`接口并重写`compareTo()`方法来实现。在这个例子中,成绩可以是时间或距离两类。
首先,定义一个成绩类 `Score`,该类包含成绩的时间和距离属性。
```java
public class Score implements Comparable<Score> {
private String type; // 成绩类型,可以是"time"或"distance"
private int value; // 成绩的值
public Score(String type, int value) {
this.type = type;
this.value = value;
}
// 重写compareTo()方法
@Override
public int compareTo(Score o) {
if (this.type.equals(o.type)) {
// 如果成绩类型相同,则直接比较值的大小
return Integer.compare(this.value, o.value);
} else {
// 如果成绩类型不同,按照时间优先、距离次之的顺序进行比较
if (this.type.equals("time")) {
return -1; // 如果当前成绩是时间类型,则排在前面
} else {
return 1; // 如果当前成绩是距离类型,则排在后面
}
}
}
}
```
然后,可以创建一个成绩列表,并使用`Collections.sort()`方法对其进行排序。
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Score> scores = new ArrayList<>();
scores.add(new Score("time", 10)); // 添加时间类型的成绩
scores.add(new Score("distance", 100)); // 添加距离类型的成绩
scores.add(new Score("distance", 200)); // 添加距离类型的成绩
scores.add(new Score("time", 15)); // 添加时间类型的成绩
Collections.sort(scores); // 对成绩列表进行排序
for (Score score : scores) {
System.out.println(score.type + ": " + score.value);
}
}
}
```
运行以上代码,可以得到按照成绩类型和值进行排序后的结果:
```
time: 10
time: 15
distance: 100
distance: 200
```
这样,我们就可以根据成绩的类型和值对成绩进行排序了。根据具体需求,可以在`compareTo()`方法中进行更多的定制化排序逻辑。
阅读全文