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