1

我正在编写一个游戏,您可以在其中拥有不同的用户。每次玩游戏时,您都会提交一个分数。我想要一个高分板,显示有史以来前 10 名的分数。例如:

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. 如果两个分数相同,则应检查球员姓名的字母顺序,我该怎么做?
4

1 回答 1

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);
        }
    }
}

这样您就可以将分数保存在 a 中List并使用Collections.sort().

(在上面的例子中,我假设你有一个Player带有属性的类name

于 2019-03-25T06:18:57.560 回答