我需要排序包含我創建的兩種不同類的數組的排序方面的幫助。我的兩個班都是具有姓名和年齡的「人」,然後我有一個從人類繼承而來的班級「物理學家」,但他們開始學習時也有一個「開始年」的領域。事情是這樣的:用兩個不同的對象對數組排序
public class Human implements Comparable<Human> {
private int age;
private String name;
public Human(int agein, String namein) {
age = agein;
name = namein;
}
public int compareTo(Human other) {
return Integer.compare(this.age, other.age);
}
}
public class Fysiker extends Human {
private int year;
public Fysiker(int startYear, int ageIn, String nameIn){
super(ageIn, nameIn);
}
public int compareTo(Fysiker other) {
if(other instanceof Fysiker && this.getAge() == other.getAge()) {
return Integer.compare(this.year, other.year);
}
else {
return Integer.compare(this.getAge(), other.getAge());
}
}
}
我要的是,當我創建人類和物理學家混合陣列和排序的話,我希望它按年齡排序,如果兩個物理學家是同齡人,那麼他們應該按照他們的年份排序。例如像這樣:
輸入:
名:Alex,年齡:32,時間:2007年
名:尼爾斯,年齡:30,年:2008
名:安德斯,年齡:32年:2003
名:埃裏克年齡:18
名:奧洛夫,年齡:31
有序數組:
名:埃裏克年齡:18
名:尼爾斯,年齡:30,年:2008
名:奧洛夫,年齡:31
名:安德斯年齡:32年:2003
名:Alex,年齡:32,時間:2007年
都是我的compareTo方法錯了嗎?或者爲什麼它不工作? 我沒有得到任何錯誤,數組只是按年齡排序,然後沒有更多的發生。
我很感謝您的幫助!
public int compareTo(Fysiker other) {
if(other instanceof Fysiker && this.getAge() == other.getAge()) {
return Integer.compare(this.year, other.year);
}
else {
return Integer.compare(this.getAge(), other.getAge());
}
}
將永遠不會被調用,因爲你人這麼簽名不匹配(如通過阿爾森在評論中提到)的數組:
添加的語言關鍵字,請,使得它更容易。 Java的? – Roger
它是* Java *嗎?如果是,請添加相應的標籤,請 –
是的,它是Java。對不起,我忘了這件事。 –