Tengo que solicitar las citas por fecha y hora. Tengo un ArrayList of Appointments y he intentado crear un comparador para comparar sus fechas y horas. Intento usar el método Collections.sort, pasándole el ArrayList of Appointments y el AppointmentComparator que he creado. Al compilar obtengo un "No es un método adecuado para ordenar". Aquí hay un enlace al mensaje de error total generado por el compilador: http://prntscr.com/7y4qbUso del comparador para ordenar ArrayList Java
Comparador:
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;
}
línea con error de sintaxis:
Collections.sort(book, new AppointmentComparator());
libro variable es un ArrayList de citas. clase ArrayList<Appointment>
AppointmentBook: Clase
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;
}
cita:
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;
}
}
¿Puedes publicar toda la clase AppointmentComparator para nosotros? Puede haber un problema en la definición de clase en sí, y solo podemos especular sin un error de compilación/la definición de clase en sí. –
¿También puede publicar cómo definió la variable del libro antes de llamar a Collections.sort()? –
Bien actualizado para incluir toda la clase – Legendish