我有一个对象数组,这些对象都有多个存储在其中的值。我把它们放在一个对象数组中。
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 []',然后在一个新的对象数组中进行排序,其中数组中的点数最高,其余的按降序排列。我不确定如何对对象中的单个值进行排序。
任何帮助都会受到大力赞赏,
感谢。
答案 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。