En utilisant le Comparateur de commande liste de tableaux Java
J'ai commander des rendez-vous à la date et l'heure. J'ai une liste de tableaux de rendez-vous et ont essayé de créer un comparateur pour comparer les dates et heures. Je suis en train d'utiliser les Collections.méthode de tri, en lui transmettant la liste de tableaux de rendez-vous et le AppointmentComparator que j'ai créé. Lors de la compilation j'obtiens un "Pas de méthode appropriée pour le tri." Voici un lien vers le message d'erreur généré par le compilateur : http://prntscr.com/7y4qb
Comparateur:
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;
}
Ligne avec erreur de syntaxe:
Collections.sort(book, new AppointmentComparator());
variable livre est une liste de tableaux de rendez-vous. ArrayList<Appointment>
AppointmentBook classe:
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;
}
Rendez-vous de la classe:
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;
}
}
Pouvez-vous poster aussi la façon dont vous avez défini le livre variable avant d'appeler les Collections.sort()?
Ok mis à jour pour inclure l'ensemble de la classe
Nous avons toujours besoin de voir la déclaration de
book
.Eh bien, le livre est une variable d'instance créée au sein d'une classe. Il sera rempli de Rendez-vous des objets spécifiés par l'utilisateur.
OriginalL'auteur Legendish | 2012-04-10
Vous devez vous connecter pour publier un commentaire.
À partir du message d'erreur, il semble que vous avez oublié de déclarer votre comparateur comme la mise en œuvre de l'interface:
Il a besoin d'avoir les outils partie, non seulement de contenir la méthode.
tout recompiler ? si pas, poste le code complet
Mauvais poste le code complet de la AppointmentBook classe, qui est l'endroit où je vais avoir l'erreur. Je sais pour sûr, la Comparaison est faite correctement.
Ok question d'origine est édité avec la classe qui est de donner le message d'erreur. Ignorer les commentaires
Hmm, ma prochaine étape serait de passer à travers et assurez-vous que tous les existants .les fichiers de classe de la vieille sortie sont supprimés avant de recompiler. (Un "clean and build" d'habitude, je ne sais pas comment faire cela dans blueJ.) Vous pouvez également essayer de l'explicite à l'invocation de la méthode comme
Collections.<Appointment>sort(book, comparator);
Quel compilateur que vous utilisez?OriginalL'auteur Affe
Vous avez besoin pour lancer votre nouveau AppointmentComparator
OriginalL'auteur nyuen
Aussi, nous pouvons utiliser l'intérieur de la classe pour certains cas:
code pour toutes les classes:
https://github.com/Evegen55/Java_DukeEdu_Coursera_2/blob/master/Earthquakes_Programming%20and%20Interfaces/src/earthquakes_programming_and_interfaces/QuakeEntry.java
OriginalL'auteur Johnn55
Semble que vous n'avez pas mis en œuvre Le comparateur interface pour votre AppointmentComparator
OriginalL'auteur Akash Yadav