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

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

我正在尝试调用一个方法,该方法将按目标或胜利对arraylist进行排序。我已经在我的足球俱乐部班级里有了一个比较,它可以对有效的目标进行分类。有没有一种方法可以让我有多个compare来排序不同的属性,比如goals或wins,当我的sortgoals或sortwins方法被调用时可以调用这些属性?

  1. public class FootballClub extends SportsClub implements Comparable <FootballClub> {
  2. int wins = 0;
  3. int goals = 0;
  4. int points = 0;
  5. //other methods above
  6. @Override
  7. public int compareTo(FootballClub o) {
  8. int compareGoals=((FootballClub)o).getGoals();
  9. return this.goals-compareGoals;
  10. }
  11. }
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 {

相关问题