作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我有一个对象 - Team
。 Team
有三个字段,wins
、losses
和 draws
。
如果我有几个对象说 Team1
、Team2
、Team3
,其中 Team1
有 3 场胜利, 2负1平,Team2
3胜3负,Team3
2胜3负1平
将所有三个团队放在一个数组中。
我正在尝试排序(我知道该怎么做.. 实现 Comparable
,覆盖 compareTo()
使用 Array.sort
)他们按胜场排序,如果两支球队的胜场相同,我想按失利对他们进行排序(最终将添加第三个字段以进一步打破平局)。
我应该编写自己的排序方法吗?有人可以指出我正确的方向吗,因为我不知道该去哪里。
最佳答案
与 Ben 的回答类似,但有一点不同,为了清楚起见,我经常使用以下模式。这是一个Comparator,但Comparable 的代码类似。
Comparator<Team> myComparator = new Comparator() {
@Override
public int compare(Team t1, Team t2) {
int result = t1.getWins() - t2.getWins();
if (result == 0)
result = t2.getLosses() - t1.getLosses();
if (result == 0)
... more tests here
return result;
}
};
请注意,在极端情况下,取两个整数的差可能溢出,因此更稳健的变体将使用Integer.compare(t1.getWins() , t2.getWins())
。但是,在这种情况下,您的球队不太可能有超过 2^31 场胜利或失败。 :-)
要使用它,去
Arrays.sort(myArrayOfTeams, myComparator);
关于java - (Java) 如何对对象数组进行排序,并断开两个对象之间的联系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27029296/
我是一名优秀的程序员,十分优秀!