arraylist排序使用多个compareto对单个类中的属性进行排序

swvgeqrz  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(288)

我正在尝试调用一个方法,该方法将按目标或胜利对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;
   }
}
anhgbhbe

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 {

相关问题