[Java]根据玩家得分对数组进行排序

时间:2017-02-13 05:09:32

标签: java arrays sorting

我需要不断向数据字段添加新玩家。所以我想首先将每个人添加到一个ArrayList,其中对象播放器有两个变量:name和score。然后我想创建一个排名方法,将我的arraylist中的所有玩家存放到一个数组中,并将它们从最高分到最低分。我不知道如何对它们进行排序,因为这是我想要排序的自定义对象。我正在使用的示例是49个玩家的数据集。

2 个答案:

答案 0 :(得分:0)

您必须实现Comparable界面并覆盖compareTo方法才能进行自定义比较。更多信息:https://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html

答案 1 :(得分:0)

它似乎适用于你。

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 + "}";
    }
}