您好,我对编程相当陌生,我的比较方法有困难,我有几个类,我的最初问题是我的父类。
我收到此错误:
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/