J'ai une liste d'objets de visite, et je veux maintenant construire une autre liste contenant les heures disponibles pour un jour donné ;
public class Visit {
private int id;
private Date date;
private Time time;
private Pet pet;
private Vet vet;
il s'agit d'un tableau String[] contenant toutes les heures de visite :
public class VisitTime {
private static final String[] visitTime =
{"09:00:00","09:30:00","10:00:00","10:30:00","11:00:00","11:30:00","12:00:00",
"12:30:00","13:00:00","13:30:00","14:00:00","14:30:00","15:00:00","15:30:00","16:00:00","16:30:00"};
Je récupère donc la liste des visites de la base de données (chaque visite a une durée définie), et je vérifie s'il y a une autre heure libre pour programmer une visite.
J'ai écrit deux méthodes pour le faire, l'une avec itération, l'autre avec des flux, qui fonctionnent toutes deux comme prévu.
Ce que je demande, c'est comment je peux reconstruire cette méthode pour NE PAS utiliser la méthode terminale deux fois.
public List<String> getHoursAvailable12(int vetId, String date){
List<Visit> visitList = getVisitByVetIdAndDate(vetId, date);
List<String> hoursAvailable = new ArrayList<>(Arrays.asList(VisitTime.getVisittime()));
List<String> hoursTaken = visitList.stream().map(Visit::getTime).map(Time::toString).collect(Collectors.toList());
return hoursAvailable.stream().filter(x -> !hoursTaken.contains(x)).collect(Collectors.toList());
}
et voici la méthode traditionnelle avec les collections :
public List<String> getHoursAvailable(int vetId, String date){
List<Visit> visitList = getVisitByVetIdAndDate(vetId,date);
ArrayList<String> hoursAvailable = new ArrayList<>(Arrays.asList(VisitTime.getVisittime()));
for(Visit x : visitList){
{
String time = x.getTime().toString();
if(hoursAvailable.contains(time)) hoursAvailable.remove(time);
}
}
return hoursAvailable;
}