2017-02-13 231 views
-2

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

+0

创建一个自定义的“Comparator”或实现“Comparable”。 –

+2

请添加您的代码到目前为止尝试过的内容。 – proudandhonour

+0

在TreeSet中保存对象,将比较器传递给TreeSet构造函数,它将为您保留命令 –

回答

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 + "}"; 
    } 
} 
相关问题