按对象中的值对对象进行排序

时间:2013-01-09 22:50:14

标签: java android arrays sorting

我有一个对象数组,这些对象都有多个存储在其中的值。我把它们放在一个对象数组中。

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 []',然后在一个新的对象数组中进行排序,其中数组中的点数最高,其余的按降序排列。我不确定如何对对象中的单个值进行排序。

任何帮助都会受到大力赞赏,

感谢。

2 个答案:

答案 0 :(得分:6)

您可以使用Arrays.Sort并提供自定义Comparator。这样的事情应该有效:

public class PlayerScoresComparator implements Comparator<PlayerScores> {
    @Override
    public int compare(PlayerScores lhs, PlayerScores rhs) {
        return lhs.points - rhs.points;
    }
}

答案 1 :(得分:1)

作为kabuko建议的替代方法,您可以使用ArrayList的PlayerScore对象,同时实现Comparable接口并向PlayerScore类添加compareTo(PlayerScore another)方法,如下所示:

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。