【发布时间】:2011-04-30 12:15:05
【问题描述】:
您好,我是编程新手,比较方法有困难,我有几个类,我最初的问题是我的父类。
我收到此错误:
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>team 中。
我的界面:
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 接口。
编写一个实现 Comparator<Player> 接口的 ComparePlayers 类。它应该按玩过的游戏数比较玩家(如果玩过的游戏数相同,则按姓氏的字母顺序)。为接受 Comparator<Player> 参数的 Club 类实现一个新的构造函数。因此编写一个主程序,该程序将打印俱乐部中每个球员的信息,其中球员按比赛的降序排列。这应该允许主程序指定排序,而无需修改任何其他类中的代码。
很抱歉,如果这是冗长的,但我正在努力找出问题所在,我尝试了几种变体,但它不起作用。这将在周五发布,只要朝着正确的方向前进,我们将不胜感激。
【问题讨论】:
-
与其编写自己的 Comparator 接口,不如使用 java.util 包中的接口。
标签: java comparator