Как отсортировать ArrayList по int в порядке убывания? - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть следующий код, который сортирует мой класс игрока по тому, насколько хорошо они оценены.В моем классе Game есть ArrayList из Player с, которые я пытаюсь отсортировать по их оценкам.Прямо сейчас, это сортирует в обратном порядке (пример после кода).

// Player class
@Override
public int compareTo(Player o) {
    return(this.getHowGood() > o.getHowGood() ? -1 :
        (this.getHowGood() == o.getHowGood() ? 0 : 1));
}

Класс игры

PlayerSorter playerSorter = new PlayerSorter(allCompetitors);
ArrayList<Player> sortedPlayer = playerSorter.getSortedPlayerByHowGood();
System.out.println("-----Sorted JobCandidate by age: Ascending-----");
for(Player player : sortedPlayer) {
    System.out.println(player.getHowGood() + "");
}

Класс PlayerSorter:

import java.util.ArrayList; 
import java.util.Collections;   

public class PlayerSorter {

    ArrayList<Player> players = new ArrayList<>();

    public PlayerSorter(ArrayList<Player> player) {
        this.players = player;
    }

    public ArrayList<Player> getSortedPlayerByHowGood() {         
        Collections.sort(players);
        return players;
    }
}

Что я получаю в консоли (что находится на моем JFrame):

-----Sorted Player by rating: Ascending /*descending is what I'm looking for here*/-----
8
14
22
33
36
42
44
51
52
54
58
60
60
62
65
73
75
84
93
99

Как я показал выше, цифры растут в том, насколько хорошо, и я пытаюсь сделать противоположное этому, но не могу понять это.Я попытался изменить числа в классе Player на их противоположные (отрицательные), но это не сработало.Я попытался изменить порядок ArrayList на Collections.reverse(), и это не сработало.

Ответы [ 3 ]

0 голосов
/ 29 сентября 2018

Обратный порядок после сортировки:

Collections.sort(players);
Collections.reverse(players);

или в одну строку:

Collections.sort(players, Collections.reverseOrder());
0 голосов
/ 29 сентября 2018

Заменить

Collections.sort(players);

На

Collections.sort(players,Collections.<Player>reverseOrder());
0 голосов
/ 29 сентября 2018

Используйте Collections.sort(players, Collections.reverseOrder()) вместо Collections.sort(players).

...