可以给我一个相应的代码例子的
时间: 2024-03-26 09:35:36 浏览: 8
好的,以下是一个使用数组实现的示例代码:
```java
public class Leaderboard {
private Player[] players;
private int size;
public Leaderboard(int maxSize) {
players = new Player[maxSize];
size = 0;
}
public void addPlayer(Player player) {
if (size < players.length) {
players[size++] = player;
Arrays.sort(players, 0, size, new Comparator<Player>() {
@Override
public int compare(Player p1, Player p2) {
return p2.getScore() - p1.getScore(); // 按照得分从高到低排序
}
});
} else if (player.getScore() > players[size - 1].getScore()) {
players[size - 1] = player;
Arrays.sort(players, 0, size, new Comparator<Player>() {
@Override
public int compare(Player p1, Player p2) {
return p2.getScore() - p1.getScore();
}
});
}
}
public Player[] getTopPlayers(int k) {
if (k < 1 || k > size) {
throw new IllegalArgumentException("Invalid k");
}
Player[] topPlayers = new Player[k];
for (int i = 0; i < k; i++) {
topPlayers[i] = players[i];
}
return topPlayers;
}
}
class Player {
private String name;
private int score;
public Player(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
}
```
上述代码中,`Leaderboard` 类表示排行榜,使用一个固定大小的数组 `players` 存储玩家信息。`addPlayer` 方法用于添加一个新玩家,如果排行榜未满,则直接添加并排序;如果已满,且新玩家得分高于最后一名玩家,则替换最后一名玩家并重新排序。`getTopPlayers` 方法用于获取排名前 k 的玩家信息。