嗨,我是编程的新手,我的比较方法有困难,我有几个类,我的初始问题是我的父类.
我收到此错误:
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 .因此,编写一个主程序,打印关于俱乐部中每个玩家的信息,其中玩家按照游戏的降序排列.这应该允许主程序指定排序而不修改任何其他类中的代码.
我很抱歉,如果这是漫长的啰嗦,但我正在努力看到什么是错的,我尝试了几个变化,它只是不会工作.这是在星期五,只是推动正确的方向将非常感激.
将您的比较实现更改为:
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)