Hallo!
ich möchte eine Klasse schreiben, die Mitarbeiter mit gleichen Arbeitszeiten erst sortiert (mit dem übergebenen Comparator) und dann filtert um am Ende eine Liste zurückzugeben, die nur noch Mitarbeiter enthält deren Arbeitszeiten sich nicht überschneiden. Das ist soweit mein Ansatz:
Leider funktioniert er nicht, wie er soll, da auch Mitarbeiter ausgegeben werden, die zur selben Zeit arbeiten. Ich bin mir aber ziemlich sicher, dass die Bedingungen in der if stimmen sollten. Vertue ich mich da? Oder liegt der Fehler an einer anderen Stelle?
Wäre super dankbar für Tipps!
ich möchte eine Klasse schreiben, die Mitarbeiter mit gleichen Arbeitszeiten erst sortiert (mit dem übergebenen Comparator) und dann filtert um am Ende eine Liste zurückzugeben, die nur noch Mitarbeiter enthält deren Arbeitszeiten sich nicht überschneiden. Das ist soweit mein Ansatz:
Java:
public class TimeSelector {
public static List <Employee> selectDiffTimes(Comparator<Employee> comp,
Collection<Employee> col){
List <Employee> list = new ArrayList <Employee>();
List <Employee> choosenEmployees = new ArrayList <Employee>();
list.addAll(col);
list.sort(comp);
if(list.size() == 1){
return list;
}
for(Employee a : list){
for(int b = 0; b < list.size(); b++){
int x= 0;
//außer sich selbst
if(b != list.indexOf(a) && x== 0){
if(!list.get(b).getEnd().isAfter(a.getStart()) ||
!list.get(b).getStart().isBefore(a.getEnd())){
if(listSorted.contains(a)){
x++;
continue;
} else choosenEmployees.add(a);
}else continue;
}
}
}
listSorted.sort(comp);
return choosenEmployees;
}
}
Leider funktioniert er nicht, wie er soll, da auch Mitarbeiter ausgegeben werden, die zur selben Zeit arbeiten. Ich bin mir aber ziemlich sicher, dass die Bedingungen in der if stimmen sollten. Vertue ich mich da? Oder liegt der Fehler an einer anderen Stelle?
Wäre super dankbar für Tipps!