java - 重写抽象方法compare()

标签 java comparator

您好,我对编程相当陌生,我的比较方法有困难,我有几个类,我的最初问题是我的父类。

我收到此错误:

Person 不是抽象的,并且不会重写 Comparator 中的compare(java.lang.Object, java.lang.Object) 方法

    public class Person implements Comparator
    {
     //some methods

    public int compare(Person p1, Person p2)
    {
       // if last names are the same compare first names
       if(p1.getLastName().equals(p2.getLastName()))
       {
           return p1.getFirstName().compareTo(p2.getFirstName());
       }
       return p1.getLastName().compareTo(p2.getLastName());

    }

我的子类看起来像这样:

    public class Player extends Person implements Comparator
    {
      //some methods

    public int compare(Player p1, Player p2)
    {
       if(p1.getGamesPlayed()<p2.getGamesPlayed())

       {
          return -1;
       }else if (p1.getGamesPlayed()==p2.getGamesPlayed())
       {
          return 0;
       }else
       {
          return 1;
       }
     }

我还有一个俱乐部类,它将所有信息存储在 ArrayList <Player> 中团队。

我的界面:

    public interface Comparator<T>
    {
        int compare(T o1, T o2);
    }

我也有这门课

   public class ComparePlayers implements Comparator<Player>
   {

      public int compare(Player p1, Player p2)
      {
         if(p1.getGamesPlayed()< p2.getGamesPlayed())
         {
            return -1;
         }else if(p1.getGamesPlayed()== p2.getGamesPlayed())
         {
            return p1.getLastName().compareTo(p2.getLastName());
         }else
         {
             return 1;
         }
       }

其规范是:

当一名新球员签约时,她/他应该按照姓氏的字母顺序插入俱乐部类别(如果姓氏相同,则按名字的字母顺序排列)。为此,请让您的 Person 和 Player 类实现适当的 Comparable 接口(interface)。

编写一个实现比较器的 ComparePlayers 类 <Player>界面。它应该根据所玩的游戏数量来比较玩家(如果所玩的游戏数量相同,则按姓氏的字母顺序进行比较)。为采用比较器的 Club 类实现一个新的构造函数 <Player>范围。因此,编写一个主程序,该程序将打印有关俱乐部中每个球员的信息,其中球员按所玩比赛的降序排列。这应该允许主程序决定排序,而无需修改任何其他类中的代码。

如果这很啰嗦,我很抱歉,但我正在努力找出问题所在,我已经尝试了几种变体,但它不起作用。该报告将于周五发布,只要朝着正确的方向插入,我们将不胜感激。

最佳答案

将比较实现更改为:

public int compare(Object o1, Object 02)
{
   Person p1 = (Person)o1;
   Person p2 = (Person)o2;
   // if last names are the same compare first names
   if(p1.getLastName().equals(p2.getLastName()))
   {
       return p1.getFirstName().compareTo(p2.getFirstName());
   }
   return p1.getLastName().compareTo(p2.getLastName());

}

关于java - 重写抽象方法compare(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5841665/

相关文章:

java - Duel 插件,使用 HashMap 发送请求和打开库存

java 。如何从两个字符串数组或列表中删除相同的字符串对象

java - 字母数字 - 字母数字排序

java - Arrays.sort 使用 Lambda 然后比较

java - 如何实现 Comparable 使其与身份平等一致

java - Spring Rest 方法总是返回 405 Method not allowed

java - getActivity().findViewById(int id) 即使在 fragment 完成构建后也会返回 null

java - 如何在 Flowable 中执行高效的卸载过程

Java Comparator、Comparable 和 TreeSet.contains

java - 排序 ListView 时不调用比较方法