我正在尝试调用一个方法,该方法将按目标或胜利对arraylist进行排序。我已经在我的足球俱乐部班级里有了一个比较,它可以对有效的目标进行分类。有没有一种方法可以让我有多个compare来排序不同的属性,比如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;
}
}
1条答案
按热度按时间anhgbhbe1#
排序时可以传递任何比较器,compareto只是在未指定比较器时使用的(类的自然比较器):
https://docs.oracle.com/javase/8/docs/api/java/util/collections.html#sort-java.util.list-java.util.comparator-
https://docs.oracle.com/javase/8/docs/api/java/util/arrays.html#sort-t:a-java.util.comparator-
自然比较器也是java内部用于字符串等的比较器,因此不需要每次都指定比较器。例子:
public final class String implements java.io.Serializable, Comparable<String>, CharSequence {