Prüfen, ob Zeit Überschreitung

Diskutiere Prüfen, ob Zeit Überschreitung im Java Basics - Anfänger-Themen Bereich.
B

beta20

Hallo,

Ich habe eine Liste von Objekte, die eine Start und Endzeit haben.

MyEntity:
- LocalTime startDate;
- LocalTime endDate;

Nun habe ich eine Liste von dieser Entity: List<MyEntity> list;

Was ich nun prüfen mochte, ob es Überschneidungen gibt:
Bpsw.

Objekt1:
- startDate: 09:00 Uhr
- endDate: 17:00 Uhr

Objekt2:
- startDate: 08:00 Uhr
- endDate: 17:00 Uhr

Java:
boolean check(List<MyEntity> list) {
?????
}
Heißt in diesem Beispiel gibt es eine Zeitüberschreitung. Wie kann ich das prüfen?
 
mihe7

mihe7

Das kannst Du mir einem Sweep erledigen. Dazu brauchst Du eine Struktur, aus der Du den Zeitpunkt und die "Seite" (Start oder Ende) ablesen kannst. Quick & Dirty (kann Fehler enthalten):
Java:
static class Event implements Comparable<Event> {
    LocalDate date;
    boolean start; // true, falls date ein Startdatum ist
    Event(LocalDate date, boolean start) { this.date = date; this.start = start; }

    public compareTo(Event e) {
        int result = date.compareTo(e.date);
        return (result == 0) ? (start ? -1 : 1) : result;
    }
}
Java:
List<Event> events = Stream.concat(
        list.stream().map(entity -> new Event(entity.startDate, true),
        list.stream().map(entity -> new Event(entity.endDate, false)
    ).sorted().collect(toList());

int c = 0;
for (Event e : events) {
    if (e.start) {
        if (c > 0) { return true; }
        c++;
    } else {
        c--;
    }
}
 
Thema: 

Prüfen, ob Zeit Überschreitung

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben