嗨,所以我正在创建一个锦标赛记分牌GUI,其中包含以下字段的团队列表:
Name
Wins
Point Spread
Time
Losses
Ties
getMainElo() <--- Isn't an instance
getTieElo() <--- Isn't an instance
有了这个,我将团队添加到ScoreBoard类中的ArrayList,我的下一步是按他们的
排序MainElo Team.getMainElo()
然后
TieElo Team.getTieElo() (If MainElo is the ==)
在对它们进行排序之后,我想将这个已排序的数组复制到ScoreBoard类中的一个新数组中,以便以后可以用它来打印到GUI。
我一直在尝试使用Comparable接口以及比较器,但我无法在生活中使用任何东西。
答案 0 :(得分:0)
如果你不能使用正确的树集,我建议使用java.util.Collections.sort(Collection,Comparator)。集合还提供了有序集合副本的方法。
答案 1 :(得分:0)
也许这样的事情会有所帮助。
Collections.sort(list, new Comparator<Team>() {
@Override
public int compare(Team o1, Team o2) {
if(o1.getMainElo().equals(o2.getMainElo())){
return o1.getTieElo().compareTo(o2.getTieElo());
}
return o1.getMainElo().compareTo(o2.getMainElo());
}
});
答案 2 :(得分:0)
我注意到Team类中的所有字段都是静态的,这意味着它们将由此类的所有实例共享。
您需要将它们设为实例变量,然后您应该能够使用比较器进行排序。
答案 3 :(得分:0)
你需要的只是传递一个平等的条件。
public int compareTo(Team otherTeam) {
return this.getMainElo() == otherTeam.getMainElo() ?
this.getTieElo() - otherTeam.getTieElo()
: this.getMainElo() - otherTeam.getMainElo();
}