2017-02-13 144 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 + "}"; 
    } 
} 
相關問題