Ich muss Termine nach Datum und Uhrzeit bestellen. Ich habe eine ArrayList von Terminen und habe versucht, einen Komparator zu erstellen, um ihre Daten und Zeiten zu vergleichen. Ich versuche, die Collections.sort-Methode zu verwenden, indem ich ihr die ArrayList von Appointments und den von mir erstellten AppointmentComparator übergebe. Beim Kompilieren bekomme ich eine "Keine geeignete Sortiermethode". Hier ist ein Link auf die volle Fehlermeldung vom Compiler generiert: http://prntscr.com/7y4qbMit Comparator ArrayList Java bestellen
Vergleicher:
public class AppointmentComparator implements Comparator<Appointment>
{
public int compare(Appointment a, Appointment b)
{
if (a.getDay() < b.getDay())
return -1;
if (a.getDay() == b.getDay())
{
if (a.getStart() < b.getStart())
return -1;
if (a.getStart() > b.getStart())
return 1;
return 0;
}
return 1;
}
Zeile mit Syntaxfehler:
Collections.sort(book, new AppointmentComparator());
variable Buch ist eine Arraylist von Terminen. ArrayList<Appointment>
AppointmentBook Klasse:
import java.util.ArrayList;
import java.util.Collections;
public class AppointmentBook
{
private ArrayList<Appointment> book;
public AppointmentBook()
{
book = new ArrayList<Appointment>();
}
public void addAppointment(Appointment appt)
{
book.add(appt);
Collections.sort(book, new AppointmentComparator());
}
public String printAppointments(int day)
{
String list = "";
for (int i = 0; i < book.size(); i++)
{
if (book.get(i).getDay() == day)
{
list = list + "Appointment description: " + book.get(i).getDescription() + "\n" + "Date of Appointment: " +
book.get(i).getDay() + "\n" + "Time: " + book.get(i).getStart() + " - " + book.get(i).getEnd() + "\n" + "\n";
}
}
return list;
}
Terminklasse:
public class Appointment
{
private String desc;
private int day; //in format mmddyyyy
private int start; //in format hhmm
private int end; //in format hhmm
public Appointment(String description, int aptDay, int startTime, int endTime)
{
desc = description;
day = aptDay;
start = startTime;
end = endTime;
}
public String getDescription()
{
return desc;
}
public int getDay()
{
return day;
}
public int getStart()
{
return start;
}
public int getEnd()
{
return end;
}
}
Können Sie die gesamte AppointmentComparator-Klasse für uns veröffentlichen? Möglicherweise liegt ein Problem in der Klassendefinition selbst vor, und wir können nur ohne einen Compilerfehler/die Klassendefinition spekulieren. –
Können Sie vor dem Aufruf von Collections.sort() auch angeben, wie Sie die Buchvariable definiert haben? –
Ok aktualisiert, um die gesamte Klasse zu enthalten – Legendish