[Java] trier un tableau en fonction des scores des joueurs [dupliquer]


Cette question a déjà une réponse ici:

J'ai besoin d'ajouter constamment de nouveaux joueurs dans le champ de données. Je pensais donc d'abord ajouter tout le monde à une ArrayList où le joueur d'objet a deux variables: nom et score. Ensuite, je veux créer une méthode de classement qui déposerait tous les joueurs de mon arraylist dans un tableau et triez-les du score le plus élevé au plus bas. Je ne sais pas comment les trier cependant car il s'agit d'un objet personnalisé que j'essaie de trier. L'exemple avec lequel je travaille est un ensemble de données de 49 joueurs.

Author: Ryan McClara, 2017-02-13

2 answers

Vous devrez implémenter l'interface Comparable et remplacer la méthode compareTo afin de faire votre comparaison personnalisée. Plus ici: https://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html

 0
Author: Anoop R Desai, 2017-02-13 05:14:57

Cela semble fonctionner pour u.

public static void main(String[] args) {


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

    players.add(new Player("L", 98));
    players.add(new Player("M", 88));
    players.add(new Player("N", 90));

    System.out.println("before " + players);

    Collections.sort(players, new Comparator<Player>() {
        @Override
        public int compare(Player o1, Player o2) {
            return o1.getScore() > o2.getScore() ? -1 : 1;
        }
    });


    System.out.println("after  " + players);
}

static class Player {

    private String name;

    private double score;

    public Player(String name, double score) {
        this.name = name;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    @Override
    public String toString() {
        return "{" + name + ", " + score + "}";
    }
}
 0
Author: Rod Bate, 2017-02-13 05:23:29