Ich arbeite an meiner DS/A Hausaufgabe, und ich kann nicht für das Leben von mir herausfinden, wie die Comparable/Comparator-Schnittstellen eine bestimmte Eigenschaft meines Objekts als Schlüssel markieren vergleichen und bestellen nach. Wir verwenden eine Mergesort Funktion, die uns zur Verfügung gestellt hat, und ich glaube, ich habe meistens alles andere bekam in dem Programm arbeiten, anders als dieser Fehler Ich erhalte:Vergleichen von Objekteigenschaften in Java mit Vergleichen
incompatible types: Student[] cannot be converted to Comparable[]
ich sehr einen kleinen Einblick schätzen würde in Dieses Problem, da ich noch ziemlich neu in Java und OOP bin. Hier ist, was ich habe:
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 + "]");
}
}
}
und 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);
}
}
Ich bin wahrscheinlich etwas schrecklich falsch zu machen, so wenden Sie sich bitte klicke mich an. Vielen Dank für deine Zeit!
Ihre Schüler Klasse sollte Vergleichbare und nicht Vergleicher implementieren. – dev4Fun