T
- The type of range elements.public class RangeSet<T extends Comparable<? super T>> extends AbstractSet<Range<T>> implements SortedSet<Range<T>>, Cloneable, Serializable
RangeSet
objects store an arbitrary number of ranges in any Java's primitives (int
, float
, etc.) or any comparable objects. Ranges may be added in any order. When a range is added, RangeSet
first looks for an existing range overlapping the specified range. If an overlapping range is
found, ranges are merged as of Range.union(org.geotools.util.Range<?>)
. Consequently, ranges returned by iterator()
may not be the same than added ranges.
All entries in this set can be seen as Range
objects. This class is
not thread-safe.
Constructor and Description |
---|
RangeSet(Class<T> type)
Constructs an empty set of range.
|
Modifier and Type | Method and Description |
---|---|
boolean |
add(byte lower,
byte upper)
Add a range of values to this set.
|
<N> boolean |
add(Comparable<? super N> min,
Comparable<? super N> max)
Adds a range of values to this set.
|
boolean |
add(double lower,
double upper)
Add a range of values to this set.
|
boolean |
add(float lower,
float upper)
Add a range of values to this set.
|
boolean |
add(int lower,
int upper)
Add a range of values to this set.
|
boolean |
add(long lower,
long upper)
Add a range of values to this set.
|
boolean |
add(Range<T> range)
Add a range to this set.
|
boolean |
add(short lower,
short upper)
Add a range of values to this set.
|
void |
clear()
Remove all elements from this set of ranges.
|
RangeSet |
clone()
Returns a clone of this range set.
|
Comparator<Range<T>> |
comparator()
Returns the comparator associated with this sorted set.
|
boolean |
contains(Object object)
Returns
true if this set contains the specified element. |
boolean |
equals(Object object)
Compares the specified object with this set of ranges for equality.
|
Range<T> |
first()
Returns the first (lowest) range currently in this sorted set.
|
double |
getMaxValueAsDouble(int index)
Returns a range's maximum value as a
double . |
double |
getMinValueAsDouble(int index)
Returns a range's minimum value as a
double . |
int |
hashCode()
Returns a hash value for this set of ranges.
|
SortedSet<Range<T>> |
headSet(Range<T> upper)
Returns a view of the portion of this sorted set whose elements are strictly less than
upper . |
int |
indexOfRange(Comparable value)
If the specified value is inside a range, returns the index of this range.
|
Iterator<Range<T>> |
iterator()
Returns an iterator over the elements in this set of ranges.
|
Range<T> |
last()
Returns the last (highest) range currently in this sorted set.
|
boolean |
remove(byte lower,
byte upper)
Remove a range of values from this set.
|
<N> boolean |
remove(Comparable<? super N> min,
Comparable<? super N> max)
Remove a range of values from this set.
|
boolean |
remove(double lower,
double upper)
Remove a range of values from this set.
|
boolean |
remove(float lower,
float upper)
Remove a range of values from this set.
|
boolean |
remove(int lower,
int upper)
Remove a range of values from this set.
|
boolean |
remove(long lower,
long upper)
Remove a range of values from this set.
|
boolean |
remove(short lower,
short upper)
Remove a range of values from this set.
|
int |
size()
Returns the number of ranges in this set.
|
SortedSet<Range<T>> |
subSet(Range<T> lower,
Range<T> upper)
Returns a view of the portion of this sorted set whose elements range from
lower ,
inclusive, to upper , exclusive. |
SortedSet<Range<T>> |
tailSet(Range<T> lower)
Returns a view of the portion of this sorted set whose elements are greater than or equal to
lower . |
String |
toString()
Returns a string representation of this set of ranges.
|
removeAll
addAll, containsAll, isEmpty, remove, retainAll, toArray, toArray
spliterator
addAll, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray
parallelStream, removeIf, stream
public RangeSet(Class<T> type) throws IllegalArgumentException
type
- The class of the range elements. It must be a primitive type or a class
implementing Comparable
.IllegalArgumentException
- if type
is not a primitive type or a class
implementing Comparable
.public Comparator<Range<T>> comparator()
comparator
in interface SortedSet<Range<T extends Comparable<? super T>>>
public void clear()
clear
in interface Collection<Range<T extends Comparable<? super T>>>
clear
in interface Set<Range<T extends Comparable<? super T>>>
clear
in class AbstractCollection<Range<T extends Comparable<? super T>>>
public int size()
size
in interface Collection<Range<T extends Comparable<? super T>>>
size
in interface Set<Range<T extends Comparable<? super T>>>
size
in class AbstractCollection<Range<T extends Comparable<? super T>>>
public boolean add(Range<T> range)
Range.union(org.geotools.util.Range<?>)
.
Note: current version do not support open interval (i.e. Range.is[Min/Max]Included()
must return true
).
add
in interface Collection<Range<T extends Comparable<? super T>>>
add
in interface Set<Range<T extends Comparable<? super T>>>
add
in class AbstractCollection<Range<T extends Comparable<? super T>>>
range
- The range to add.true
if this set changed as a result of the call.public <N> boolean add(Comparable<? super N> min, Comparable<? super N> max) throws IllegalArgumentException
min
- The lower value, inclusive.max
- The upper value, inclusive.true
if this set changed as a result of the call.IllegalArgumentException
- if lower
is greater than upper
.public boolean add(byte lower, byte upper) throws IllegalArgumentException
lower
- The lower value, inclusive.upper
- The upper value, inclusive.true
if this set changed as a result of the call.IllegalArgumentException
- if lower
is greater than upper
.public boolean add(short lower, short upper) throws IllegalArgumentException
lower
- The lower value, inclusive.upper
- The upper value, inclusive.true
if this set changed as a result of the call.IllegalArgumentException
- if lower
is greater than upper
.public boolean add(int lower, int upper) throws IllegalArgumentException
lower
- The lower value, inclusive.upper
- The upper value, inclusive.true
if this set changed as a result of the call.IllegalArgumentException
- if lower
is greater than upper
.public boolean add(long lower, long upper) throws IllegalArgumentException
lower
- The lower value, inclusive.upper
- The upper value, inclusive.true
if this set changed as a result of the call.IllegalArgumentException
- if lower
is greater than upper
.public boolean add(float lower, float upper) throws IllegalArgumentException
lower
- The lower value, inclusive.upper
- The upper value, inclusive.true
if this set changed as a result of the call.IllegalArgumentException
- if lower
is greater than upper
.public boolean add(double lower, double upper) throws IllegalArgumentException
lower
- The lower value, inclusive.upper
- The upper value, inclusive.true
if this set changed as a result of the call.IllegalArgumentException
- if lower
is greater than upper
.public <N> boolean remove(Comparable<? super N> min, Comparable<? super N> max) throws IllegalArgumentException
min
- The lower value to remove, exclusive.max
- The upper value to remove, exclusive.true
if this set changed as a result of the call.IllegalArgumentException
- if lower
is greater than upper
.public boolean remove(byte lower, byte upper) throws IllegalArgumentException
lower
- The lower value to remove, exclusive.upper
- The upper value to remove, exclusive.true
if this set changed as a result of the call.IllegalArgumentException
- if lower
is greater than upper
.public boolean remove(short lower, short upper) throws IllegalArgumentException
lower
- The lower value to remove, exclusive.upper
- The upper value to remove, exclusive.true
if this set changed as a result of the call.IllegalArgumentException
- if lower
is greater than upper
.public boolean remove(int lower, int upper) throws IllegalArgumentException
lower
- The lower value to remove, exclusive.upper
- The upper value to remove, exclusive.true
if this set changed as a result of the call.IllegalArgumentException
- if lower
is greater than upper
.public boolean remove(long lower, long upper) throws IllegalArgumentException
lower
- The lower value to remove, exclusive.upper
- The upper value to remove, exclusive.true
if this set changed as a result of the call.IllegalArgumentException
- if lower
is greater than upper
.public boolean remove(float lower, float upper) throws IllegalArgumentException
lower
- The lower value to remove, exclusive.upper
- The upper value to remove, exclusive.true
if this set changed as a result of the call.IllegalArgumentException
- if lower
is greater than upper
.public boolean remove(double lower, double upper) throws IllegalArgumentException
lower
- The lower value to remove, exclusive.upper
- The upper value to remove, exclusive.true
if this set changed as a result of the call.IllegalArgumentException
- if lower
is greater than upper
.public final double getMinValueAsDouble(int index) throws IndexOutOfBoundsException, ClassCastException
double
. The
index
can be any value from 0 inclusive to the set's size
exclusive.
The returned values always increase with index
.index
- The range index, from 0 inclusive to size
exclusive.IndexOutOfBoundsException
- if index
is out of bounds.ClassCastException
- if range elements are not convertible to numbers.public final double getMaxValueAsDouble(int index) throws IndexOutOfBoundsException, ClassCastException
double
. The
index
can be any value from 0 inclusive to the set's size
exclusive.
The returned values always increase with index
.index
- The range index, from 0 inclusive to size
exclusive.IndexOutOfBoundsException
- if index
is out of bounds.ClassCastException
- if range elements are not convertible to numbers.public int indexOfRange(Comparable value)
-1
.value
- The value to search.public boolean contains(Object object)
true
if this set contains the specified element.contains
in interface Collection<Range<T extends Comparable<? super T>>>
contains
in interface Set<Range<T extends Comparable<? super T>>>
contains
in class AbstractCollection<Range<T extends Comparable<? super T>>>
object
- The object to compare to this set.true
if the given object is equals to this set.public Range<T> first() throws NoSuchElementException
first
in interface SortedSet<Range<T extends Comparable<? super T>>>
NoSuchElementException
- if the set is empty.public Range<T> last() throws NoSuchElementException
last
in interface SortedSet<Range<T extends Comparable<? super T>>>
NoSuchElementException
- if the set is empty.public SortedSet<Range<T>> subSet(Range<T> lower, Range<T> upper)
lower
,
inclusive, to upper
, exclusive.public SortedSet<Range<T>> headSet(Range<T> upper)
upper
.public SortedSet<Range<T>> tailSet(Range<T> lower)
lower
.public Iterator<Range<T>> iterator()
Range
objects.iterator
in interface Iterable<Range<T extends Comparable<? super T>>>
iterator
in interface Collection<Range<T extends Comparable<? super T>>>
iterator
in interface Set<Range<T extends Comparable<? super T>>>
iterator
in class AbstractCollection<Range<T extends Comparable<? super T>>>
public int hashCode()
hashCode
in interface Collection<Range<T extends Comparable<? super T>>>
hashCode
in interface Set<Range<T extends Comparable<? super T>>>
hashCode
in class AbstractSet<Range<T extends Comparable<? super T>>>
public boolean equals(Object object)
equals
in interface Collection<Range<T extends Comparable<? super T>>>
equals
in interface Set<Range<T extends Comparable<? super T>>>
equals
in class AbstractSet<Range<T extends Comparable<? super T>>>
object
- The object to compare with this range.true
if the given object is equals to this range.public RangeSet clone()
clone
in class Object
Object.clone()
public String toString()
toString
in class AbstractCollection<Range<T extends Comparable<? super T>>>
Copyright © 1996–2019 Geotools. All rights reserved.