Java |按元素字段对ArrayList进行排序

时间:2014-07-09 16:33:58

标签: java sorting arraylist

Team Class

ScoreBoard Class

嗨,所以我正在创建一个锦标赛记分牌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接口以及比较器,但我无法在生活中使用任何东西。

4 个答案:

答案 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();      
}