2017-02-13 18 views
-2

データフィールドに新しいプレーヤーを追加する必要があります。だから私は最初にオブジェクトプレイヤーが名前とスコアの2つの変数を持つArrayListに誰も追加することを考えていました。それから私は、私のarraylistからすべてのプレイヤーを配列に入れて、最高得点から最低得点までソートするランク付けメソッドを作成したいと思います。しかし、私はそれらを並べ替える方法はわかりませんが、これは私が並べ替えようとしているカスタムオブジェクトです。私が扱っている例は、49人のプレーヤーのデータセットです。[Java]プレイヤーの得点に基づいて配列をソート

+0

カスタム「コンパレータ」を作成するか、「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 + "}"; 
    } 
} 
関連する問題