如何在游戏中为高分板排名得分

时间:2019-03-25 05:13:00

标签: java algorithm sorting

我正在编写一个可以拥有不同用户的游戏。每次玩游戏时,您都会提交一个分数。我想拥有一个高分榜,显示所有时间的前十名。例如:

A:[100,200,50]
B:[400,150,320]
C:[50,245,35]

我想要实现的是:

B 400
B 320
C 245
A 200
B 150
A 100
A 50
C 50
C 35

对数字本身进行排序不是一个大问题,但是我如何跟踪哪个球员的数字呢?我正在使用Java,但我认为HashMap可能会有用,但找不到解决方案。

基本上是:

  1. 我已经有了每个球员的分数列表。我应该如何保存这些数据以进行更好的排序? HashMap是个好主意吗?
  2. 执行此任务最快的算法是什么?
  3. 如果两个分数相同,则应检查球员姓名的字母顺序,我该怎么做?

1 个答案:

答案 0 :(得分:3)

您可以编写分数类并实现Comparable

class Score implements Comparable<Score> {

    int score;
    Player player;

    Score(int score, Player player) {
        this.score = score;
        this.player = player;
    }

    @Override
    public int compareTo(Score otherScore) {
        if (this.score > otherScore.score) {
            return 1;
        } 
        else if (this.score < otherScore.score) {
            return -1;
        }
        else {
            return this.player.name.compareTo(otherScore.player.name);
        }
    }
}

通过这种方式,您可以将分数保存在List中并使用Collections.sort()

(在上面的示例中,我假设您有一个Player属性为name的类)

相关问题