0

オブジェクトの配列があります。これらのオブジェクトにはすべて、複数の値が格納されています。私はそれらをオブジェクト配列内に持っています。

class PlayerScores {

String playerName;
   int pos=0;
   int played=0;
   int win=0;
   int draw=0;
   int lose=0;
   int goalsFor=0;
   int goalsAgainst=0;
   int goalDifference=0;
   int points=0;

   public PlayerScores() {
   }
}

これらは配列内に格納されます。

Player Scores[] playersObjects = new PlayerScores[int];

            playersObjects[i] = new PlayerScores();

「playersObject[]」を検索してから、新しいオブジェクト配列で並べ替えたいと思います。配列の最初に最高点があり、残りが降順です。オブジェクト内の単一の値で並べ替えを実行する方法がわかりません。

どんな助けでも大歓迎です、

ありがとう。

4

2 に答える 2

6

カスタムを使用Arrays.Sortして提供できますComparator。このようなものが動作するはずです:

public class PlayerScoresComparator implements Comparator<PlayerScores> {
    @Override
    public int compare(PlayerScores lhs, PlayerScores rhs) {
        return lhs.points - rhs.points;
    }
}
于 2013-01-09T22:58:59.453 に答える
1

カブコが提案したものの代わりに、次のように、Comparableインターフェイスを実装し、compareTo(PlayerScore another) メソッドを PlayerScore クラスに追加しながら、PlayerScore オブジェクトのArrayListを使用できます。

public class PlayerScores implements Comparable<PlayerScores> {
  [...]

public int compareTo(PlayerScore another) {
  //example of a method to calculate which ogject is "greater".
  //See Comparable documentation for details. You will need to implement proper logic
  return getHighScore() - another.getHighScore(); 
}

次に、Collections.sort() で ArrayList を並べ替えることができます。

ArrayList<PlayerScores> scores = new ArrayList<PlayerScores>();
[...] //Populate scores list
Collections.sort(scores)

これは、とにかく ArrayList を使用する必要がある場合、つまり ListView にアタッチする場合に役立ちます。

于 2013-01-09T23:28:25.770 に答える