# Überprüfen von Intervallen



## sutcha (6. Mrz 2008)

Hallo,

ich definiere einen Wertebereich mit 2 BigDecimals (Minimum und Maximum). In diesem Wertebereich liegen Intervalle, die widerum durch 2 BigDecimals beschränkt werden.
Wie überprüfe ich am einfachsten, ob die Intervalle sich überschneiden und ob sie den gesamten Bereich "nutzen"?

zB. Werte zwischen 0 und 100

Intervall: 
A: 0-15
B: 16-39
C: 40-79
D: 80-100

In diesem Fall würde sich nichts überschneiden, aber auch keine "Lücke" auftreten. Dieser Zustand wäre ideal. Falls aber C von 40-80 oder sogar 40-81 gehen würde, sollte ein Fehler kommen. 
Momentan vergleiche ich immer die Unter- und Obergrenzen, aber ich denke nicht, das es sehr performant ist. Gibt es da eine einfache Lösung, auf die ich momentan einfach nicht komme?

Vielen Dank für eure Hilfe!


----------



## SlaterB (6. Mrz 2008)

überlege dir mal die Rahmenbedingungen, du hast dort 8 einzelne Informationen,
die alle wichtig sind, die musst du auf jeden Fall alle mindestens einmal anfassen,

dass die Obergrenze von einem Intervall genau die Untergrenze des nächsten -1 sein muss,
ist eine fundamentale Eigenschaft,
die kann man auch nicht anders prüfen als 'vergleiche ich immer die Unter- und Obergrenzen' 

also ich kann mir da nix schnelleres vorstellen


----------



## sutcha (6. Mrz 2008)

wie vergleiche ich denn am besten 2 BigDecimals? < und > geht ja nicht. Wie vergleiche ich die Werte am besten?


----------



## SlaterB (6. Mrz 2008)

compareTo, wie alle Comparable-Objekte


----------



## 0x7F800000 (6. Mrz 2008)

naja, ein bisschen sinnvoll vorsortieren würde da nicht schaden, damit du nicht alle intervalle paarweise vergleichen musst... beispielsweise nach der unteren grenze. dann musst du einfach immer schauen, dass die untere grenze des nächsten intervalls nicht im letzten intervall liegt. Wenn du damit fertig bist, und stets keine überschneidung gefunden wurde, kontrollierst du noch nach, ob die oberen grenzen immer untere-1-grenze vom nächsten intervall ist...


----------

