ArrayList 排序使用多个 CompareTo 对单个 class 中的属性进行排序

ArrayList sorting using multiple CompareTo to sort attributes in single class

我正在尝试调用一种方法,该方法将按目标或胜利对 ArrayList 进行排序。我的 FootballClub class 中已经有一个 compareTo,它可以对有效的目标进行排序。有没有办法让我有多个 compareTo 来排序不同的属性,例如 goals 或 wins,当我的 sortGoals 或 sortWins 方法被调用时可以调用这些属性?

public class FootballClub extends SportsClub implements Comparable <FootballClub> {

int wins = 0;
int goals = 0;
int points = 0;

//other methods above 

@Override
public int compareTo(FootballClub o) {
    int compareGoals=((FootballClub)o).getGoals();
    return this.goals-compareGoals;
   }
}

您可以在排序时传递任何比较器,compareTo 正是在未指定比较器时使用的(您的 class 的自然比较器):

自然比较器也是Java内部用于String等的,这样就不用每次都指定比较器了。 示例:public final class String implements java.io.Serializable, Comparable<String>, CharSequence {