我有一个叫做运动员的类,它是人类的子类。在人类类中,我实现了可比接口,并使用比较方法来比较不同运动员的年龄。在运动员类中,我有一个名为年的额外字段,对应于运动员开始比赛的年份。在我程序中的主要方法中,我有一个数组列表,我添加了运动员和人类。我想这样,如果一个运动员是同龄的,可以根据运动员开始比赛的年份进行排序。我使用instanceof检查我的类人类,如果实例是对象的类型是运动员,但之后我不知道如何让它工作。
public int compareTo(Human other)
{
if(this instanceof Athlete && other instanceof Athlete && this.age == other.age){
return ;
}
return this.age - other.age;
}
}
使用您的示例,您也可以比较年份:
public int compareTo(Human other)
{
if(this instanceof Athlete && other instanceof Athlete && this.age == other.age){
String tYear = ((Athlete)this).getYear();
String oYear = ((Athlete)other).getYear();
int tYearInt = 0;
int oYearInt = 0;
try {
tYearInt = Integer.parseInt(tYear);
oYearInt = Integer.parseInt(oYear);
} catch (Exception e){
e.printStackTrace();
}
return tYearInt - oYearInt;
}
return this.age - other.age;
}
然而,尽管如此,请考虑@Andres的回答,无论何时使用instanceof,您都应该质疑您的设计是否错误。
使用多态性,而不是运算符< code>instanceof。
即:重载Athlete类中的compareTo方法。
public int compareTo(Athlete other) {
//This method will be invoked if and only if you compare an athlete with another athlete
}
此外,考虑等于方法结果应与比较方法结果一致。
一种可能的解决方案是在Athlete
类中添加一个compareTo
方法,这是以下几行中的内容(需要重写,因为我很久以前就没有使用Java了):
public int compareTo(Athlete other){
int result = super.compareTo((Human)other);
if(result == 0){
return this.year - other.year;
}
return result;
}
作为代码审查,我认为完整的代码应该如下所示:
Human.java
public int compareTo(Human other){
return age - other.age;
}
运动员.java
@Override
public int compareTo(Human other){
if(other instanceof Athlete){
return compareTo((Athlete)other);
}
return super.compareTo(other);
}
public int compareTo(Athlete other){
int result = super.compareTo((Human)other);
if(result == 0){
return this.year - other.year;
}
return result;
}
问题内容: 我有一个浮点数组和一个字符串数组。每个浮点值都与特定的String匹配。我想使用以下方式对保留自己的字符串的float数组进行排序: 这是代码: 如何排序并保留自己的字符串? 非常感谢。 问题答案:
问题内容: 我的数组不包含任何字符串。但是它包含对象引用。每个对象引用都通过toString方法返回名称,id,作者和发布者。 现在,我需要按名称对对象数组进行排序。我知道如何排序,但是我不知道如何从对象中提取名称并对它们进行排序。 问题答案: 你有两种方法可以使用Arrays实用程序类 实现一个Comparator并将数组与比较器一起传递给sort方法,该方法将其作为第二个参数。 在对象所属的类
问题内容: 允许用户使用字符串数组进行演奏。他们可以将字符串添加到数组中,从数组中删除字符串,在数组中搜索字符串,最终他们将能够对数组进行排序。排序使我很困惑。我尝试了几种不同的方法。第一种方法是将数组转换为ArrayList并使用Collections对ArrayList进行排序,然后将其转换回静态类数组。没用 我尝试的第二种方法是遍历数组,并尝试仅对用户添加的字符串进行排序,而不是对数组中的所
我有一个JSON数组: 结果为“数据”: 我怎么能有一个升序按“datesurder”? THX
问题内容: 我有一个对象数组: 联系人类别: 而且我想通过该数组进行排序,然后在某些情况下接触得到了相同的。 我可以按其中一个条件进行排序,但不能同时按两个条件进行排序。 我如何添加更多条件来对该数组进行排序? 问题答案: 想一想“按多个标准排序”是什么意思。这意味着首先通过一个条件比较两个对象。然后,如果这些条件相同,则领带将被下一个条件破坏,依此类推,直到获得所需的排序。 您在这里看到的是me
本文向大家介绍java对数组进行排序的方法,包括了java对数组进行排序的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java对数组进行排序的方法。分享给大家供大家参考。具体如下: 执行结果: 排序前: 12 24 25 4 9 68 45 7 排序后: 4 7 9 12 24 25 45 68 希望本文所述对大家的java程序设计有所帮助。