Heiner KückerDisjunct Interval Set Java |
|
Home Java-Seite Bit Packed Array ASM Improved heterogene Map, HMap Constraint Code Generator JSP WorkFlow PageFlow FlowControl Page Flow Engine Web Flow Engine Control_and_Command JSP_Spreadsheet Code-Generator für Option-Either-Stil in Java verbesserter Comparator Fluent-Interface Code-Generator auf Basis einer Grammatik Visitor mit Multidispatch for-Schleife mit yield-return Kognitions-Maschine semantisches Netz Domain Parser Codegenerator_für hierarchische Datenstrukturen Expression_Engine Formula_Parser Thread Preprocessor State Transition Engine AspectJ Java_Explorer DBF_Library Kalender_Applet SetGetGen BeanSetGet CheckPackage LineNumbers GradDms Excel-Export StringTokenizer JspDoc JspCheck JSP-Schulung Java Server Pages Struts Ascii-Tabellen- Layouter Ascii-Baum- Layouter Ascii-Art-Fluss- Diagramm- Parser AsciiArt AssignmentMatrix Layouter StringSerial Silbentrennung JDBC_Schlüssel- Generierung bidirektional/ unidirektional gelinkte Liste Java_Sitemap Generator XmlBuilder RangeMap StringFormatter VersionSafe XCopy JTextField CommandLine- ParamReader Bitmap-Grafik MultiMarkable- Buffered- InputStream JavaCache JdomUtil CollectionUtil XML Really Pull Parser Log-Filter Remote-Protokoll Sudoku-Generator Delegation statt Mehrfachvererbung Disjunct Interval Set WebCam_Demo Weiterentwicklung_Java Alaska-XBase++-Seite Projekte Philosophien Techniken Konzepte Sudoku Kontakt / Impressum Links SiteMap Letzte Aktualisierung: 01.09.2009 |
DisjunctIntervalSet.javaMengen-Klasse in Java für nicht überlappende (disjunkte) Intervalle beliebiger Comparable-Objekte mit Java-Generics. Set class in Java for not overlap (disjunct) Intervals of Comparable objects with Java Generics. Die Intervalle sind halb (rechts) offen. The Intervals are half (right) open. Disjunct Interval SetDie Klasse DisjunctIntervalSet enthält Intervalle (Ranges, Bereiche), die sich nicht überlappen dürfen. Die Intervall-Elemente sind Instanzen der Klasse Interval. Als innere Struktur zum Verwalten der Intervalle wird ein java.util.TreeSet verwendet. Ein java.util.TreeSet eignet sich besser als ein java.util.HashSet, weil Hashes darauf beruhen, dass Werte, die sich nur wenig unterscheiden (dicht beieinander liegen) unterschiedliche Hash-Werte haben. Bei der Arbeit mit java.util.Comparator in einer Baum-Struktur ist es dagegen möglich, sich dem gesuchten Wert (in diesem Fall Intervall) schrittweise anzunähern. Dazu bietet die intern verwendete Klasse java.util.TreeMap für die End-Punkte (aussenliegend) der Intervalle die Methode TreeMap#tailMap(Object) sowie TreeMap#headMap(Object), mit welchen ein bestimmter Ausschnitt (View) aus den Elementen im java.util.TreeSet gebildet werden kann.
IntervalleDie Angabe des Intervalls erfolgt rechts offen, also als End-Wert des Intervalls wird der erste Wert ausserhalb des Intervalls angegeben. Siehe dazu bitte Wikipedia Intervall_(Mathematik) Beschränkte_Intervalle. Dies hat folgende Vorteile: 1. Bei der Benutzung der Intervalle für Sub-Strings sind die Intervalle kompatibel zur Methode String#substring(int, int). 2. Bei unterschiedlichen Rastern bleiben die Intervalle kompatibel, Beispiel: Angenommen, es werden innenliegende Grenzen beim Intervall verwendet (abgeschlossenes Intervall). Im Stunden-Raster wird ein Intervall für einen Tag von Stunde 0 bis Stunde 23 angenommen. Beim Ändern des Rasters auf Minuten entsteht ein Intervall von 00:00 Uhr bis 23:00 Uhr, was falsch ist. Bei rechts offenem Intervall von 00:00 Uhr des ersten Tages bis 00:00 Uhr des folgende Tages stimmt das Intervall bei jedem beliebigen Raster wie Stunde, Minute, Sekunde oder feiner.
Das Programm ist frei und Open Source (free and Open Source). Download der Quelldateien Sourcecode DisjunctIntervalSet.zip
Achtung: Erweiterungen und Fixes stelle ich ohne Historie
und ohne Ankündigung hier bereit. Lizenzbedingungen:
Die Programme, Quelltexte und Dokumentationen können ohne
irgendwelche Bedingungen kostenlos verwendet werden. |