如何根据玩家列表中分数对玩家进行排序,当两个玩家分数相同时保持相同的排名,但后续分数会跳过已有的名次,例如 现在有 80分 70分 70分 60分, 80分为第一名,两个70分并列第二,60分为第四名,请根据需求用java写出排名代码
时间: 2024-10-20 16:04:17 浏览: 8
对成绩统计时,分数相同怎么排序.pdf
在Java中,你可以使用`Comparator`接口和`Collections.sort()`方法来实现这种按分数排序的需求,同时处理分数相等的情况。这里是一个简单的示例代码:
```java
import java.util.*;
class Player {
int score;
int rank;
// 构造函数、getters和setters...
}
List<Player> players = Arrays.asList(
new Player(80),
new Player(70),
new Player(70),
new Player(60)
);
// 定义自定义比较器
Comparator<Player> comparator = (p1, p2) -> {
if (p1.score != p2.score) { // 如果分数不同直接返回差值
return Integer.compare(p1.score, p2.score);
} else { // 分数相同则按照rank升序
return Integer.compare(p1.rank, p2.rank);
}
};
// 使用Collections.sort()方法,传入自定义比较器
Collections.sort(players, comparator);
// 输出排序后的结果
for (Player player : players) {
System.out.println("Score: " + player.score + ", Rank: " + (player.rank+1));
}
阅读全文