Wyklucz nakładające się interwały

Mam dwie listy interwałów. Chciałbym usunąć cały czas z listy1, która już istnieje na liście2. Przykład: Lista1:

[(0,10), (15,20)]

Lista2:

[(2,3), (5,6)]

Wydajność:

[(0,2), (3,5), (6,10), (15,20)]

Jakieś wskazówki?

Próbowałem usunąć jeden interwał w tym czasie, ale wygląda na to, że muszę przyjąć inne podejście:

public List<Interval> removeOneTime(Interval interval, Interval remove){
    List<Interval> removed = new LinkedList<Interval>();
    Interval overlap = interval.getOverlap(remove);
    if(overlap.getLength() > 0){
        List<Interval> rms = interval.remove(overlap);
        removed.addAll(rms);
    }
    return removed;
}

questionAnswers(2)

yourAnswerToTheQuestion