覆盖抽象方法compare()

Cjb*_*982 2 java comparator

嗨,我是编程的新手,我的比较方法有困难,我有几个类,我的初始问题是我的父类.

我收到此错误:

Person不是抽象的,并且不会覆盖Comparator中的方法比较(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());

    }
Run Code Online (Sandbox Code Playgroud)

我的孩子班看起来像这样:

    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;
       }
     }
Run Code Online (Sandbox Code Playgroud)

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

我的界面:

    public interface Comparator<T>
    {
        int compare(T o1, T o2);
    }
Run Code Online (Sandbox Code Playgroud)

而且我也有这门课

   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;
         }
       }
Run Code Online (Sandbox Code Playgroud)

这个规格是:

当新玩家签名时,她/他应按姓氏的字母顺序插入俱乐部类(如果姓氏相同,则为姓名).为此,请使Person和Player类实现相应的Comparable接口.

编写一个实现Comparator <Player>接口的ComparePlayers类.它应该根据所玩游戏的数量来比较玩家(如果玩的游戏数量相同,则按字母顺序排列).为带有Comparator <Player>参数的Club类实现一个新的Constructor .因此,编写一个主程序,打印关于俱乐部中每个玩家的信息,其中玩家按照游戏的降序排列.这应该允许主程序指定排序而不修改任何其他类中的代码.

我很抱歉,如果这是漫长的啰嗦,但我正在努力看到什么是错的,我尝试了几个变化,它只是不会工作.这是在星期五,只是推动正确的方向将非常感激.

Mar*_*ope 5

将您的比较实现更改为:

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());

}
Run Code Online (Sandbox Code Playgroud)

  • 不同意:更好地使用泛型进行编译时类型检查,因为OP已经在使用他的Comparator <Player>. (3认同)
  • @Hovercraft:OP是她 (2认同)