Как сортировать баллы за доску рекордов в игре - PullRequest
1 голос
/ 25 марта 2019

Я пишу игру, в которой вы можете иметь разных пользователей.Каждый раз, когда вы играете в игру, вы предоставляете счет.Я хочу иметь доску рекордов, которая показывает 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. Если две одинаковые оценки, следует проверить алфавитный порядок имен игроков, как я могу проверитьсделай это?

1 Ответ

3 голосов
/ 25 марта 2019

Вы можете написать класс для оценки и реализовать 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...