私は宿題をしながら小さな問題を思いついた。サブクラスでComparableインターフェイスを実装すると、Collections.sort()をどのように使用できますか?
私はPersonクラスに
public class Person {
protected String code;
protected String name;
}
そして、先生は私たちが後のArrayList
public class Professor {
private List<Person> arr;
public Professor() {
arr = new ArrayList();
}
}
を使用して学生を管理するために、教授クラスを作成したい学生
public class Student extends Person implements Comparable<Student>{
private double grade;
@Override
public int compareTo(Student that){
return Double.compare(grade, that.grade);
}
}
と呼ばれるサブクラスを持っています約10人の学生をArrayListに追加し、そのリストをソートするように求められます。問題は、私が知っている限り、リスト< Person>、List < Student>を宣言して以来、私はCollections.sort(arr)を使用できません。
私は何かを誤解しましたか?この状況でCollections.sort()を使用する方法はありますか、手動でソートするメソッドを作成する必要がありますか?
は、彼はまた、代わりにEDIT>リスト<学生の>リスト<人を作成するために私たちを尋ね、クラスの学生で、Comparableインタフェースを実装するために私達に尋ねた:ありがとうございました。すべての回答とコメントを承認してください。上記の問題は<学生の一覧を表示するためにダウンキャスト一覧<人>することによって解決されている>
を使用してリストをソートするためにあなたに別のアプローチを提供していますですコンパイラは間違いなくそのクラスに属しています。 –
あなたのクラス 'Person'はおそらく* abstract *クラスです。それで 'Comparable'を実装する' Person'を宣言できますが、 'Person'のサブクラスで'Comparable'を実装する実際のコードは –
のみです.Timothy Truckle私はあなたに同意します。これらの要件では、最も論理的な方法と思われます。 – davidxxx