私は自分のDS/Aの宿題に取り組んでいます。私の人生では、Comparable/Comparatorインターフェイスを使ってオブジェクトの特定のプロパティをキーとしてマークする方法を理解できません比較して注文する。コンパイラを使用してJavaでオブジェクトのプロパティを比較する
incompatible types: Student[] cannot be converted to Comparable[]
私は非常にいくつかの洞察力をいただければ幸いです:私たちは、私たちに提供されているマージソート機能を使用している、と私は私が受けています。このエラー以外の他のほとんどすべてのプログラムで作業を、持っていると信じてこの問題は、私はまだJavaとOOPをかなり新しくしています。ここで私が持っているものです:
TestMergeSort.java:
public class TestMergeSort {
public static void main(String[] args) {
Student[] students = initializeStudentsArray();
System.out.println("Displaying students array before sorting...");
display(students);
System.out.println("Being sorting...");
/*
* The Student array will be sorted by studentId
* which is declared as a String
*/
Merge.sort(students); // TODO: Fix the Student class to eliminate this error
System.out.println("End sorting...");
System.out.println("Displaying students array after sorting...");
display(students);
}
private static Student[] initializeStudentsArray() {
Student[] students = new Student[5];
students[0] = new Student("Joe", "Jones", "1001");
students[1] = new Student("Adam", "Ant", "950");
students[2] = new Student("Bill", "Barnes", "735");
students[3] = new Student("Mark", "Roth", "1102");
students[4] = new Student("Jerome", "Howard", "1150");
return students;
}
private static void display(Student[] students) {
for (Student std : students) {
System.out.println("Students [firstName=" + std.firstName + ", lastName=" + std.lastName + ", studentId=" + std.studentId + "]");
}
}
}
とStudent.java:私はおそらくひどく何か間違ったことをやっている
public class Student implements Comparator<Student> {
public String firstName;
public String lastName;
public String studentId;
public Student(String first, String last, String Id) {
this.firstName = first;
this.lastName = last;
this.studentId = Id;
}
@Override
public int compare(Student stud1, Student stud2) {
String student1 = stud1.studentId;
String student2 = stud2.studentId;
return student1.compareTo(student2);
}
}
、そうしてください私に手がかりを入れてください。ありがとうございました!
あなたの学生のクラスがComparableではなくコンパレータを実装する必要があります。 – dev4Fun