@Beta @GwtIncompatible public final class TreeRangeMap<K extends java.lang.Comparable,V> extends java.lang.Object implements RangeMap<K,V>
RangeMap
based on a TreeMap
, supporting
all optional operations.
Like all RangeMap
implementations, this supports neither null
keys nor null values.
Modifier and Type | Class and Description |
---|---|
private class |
TreeRangeMap.AsMapOfRanges |
private static class |
TreeRangeMap.RangeMapEntry<K extends java.lang.Comparable,V> |
private class |
TreeRangeMap.SubRangeMap |
Modifier and Type | Field and Description |
---|---|
private static RangeMap |
EMPTY_SUB_RANGE_MAP |
private java.util.NavigableMap<Cut<K>,TreeRangeMap.RangeMapEntry<K,V>> |
entriesByLowerBound |
Modifier | Constructor and Description |
---|---|
private |
TreeRangeMap() |
Modifier and Type | Method and Description |
---|---|
java.util.Map<Range<K>,V> |
asDescendingMapOfRanges()
Returns a view of this range map as an unmodifiable
Map<Range<K>, V> . |
java.util.Map<Range<K>,V> |
asMapOfRanges()
Returns a view of this range map as an unmodifiable
Map<Range<K>, V> . |
void |
clear()
Removes all associations from this range map (optional operation).
|
static <K extends java.lang.Comparable,V> |
create() |
private RangeMap<K,V> |
emptySubRangeMap() |
boolean |
equals(java.lang.Object o)
|
V |
get(K key)
Returns the value associated with the specified key, or
null if there is no
such value. |
java.util.Map.Entry<Range<K>,V> |
getEntry(K key)
Returns the range containing this key and its associated value, if such a range is present
in the range map, or
null otherwise. |
int |
hashCode()
Returns
asMapOfRanges().hashCode() . |
void |
put(Range<K> range,
V value)
Maps a range to a specified value (optional operation).
|
void |
putAll(RangeMap<K,V> rangeMap)
Puts all the associations from
rangeMap into this range map (optional operation). |
private void |
putRangeMapEntry(Cut<K> lowerBound,
Cut<K> upperBound,
V value) |
void |
remove(Range<K> rangeToRemove)
Removes all associations from this range map in the specified range (optional operation).
|
Range<K> |
span()
Returns the minimal range enclosing the ranges
in this
RangeMap . |
RangeMap<K,V> |
subRangeMap(Range<K> subRange)
Returns a view of the part of this range map that intersects with
range . |
java.lang.String |
toString()
Returns a readable string representation of this range map.
|
private final java.util.NavigableMap<Cut<K extends java.lang.Comparable>,TreeRangeMap.RangeMapEntry<K extends java.lang.Comparable,V>> entriesByLowerBound
private static final RangeMap EMPTY_SUB_RANGE_MAP
public static <K extends java.lang.Comparable,V> TreeRangeMap<K,V> create()
@Nullable public V get(K key)
RangeMap
null
if there is no
such value.
Specifically, if any range in this range map contains the specified key, the value associated with that range is returned.
@Nullable public java.util.Map.Entry<Range<K>,V> getEntry(K key)
RangeMap
null
otherwise.public void put(Range<K> range, V value)
RangeMap
Specifically, after a call to put(range, value)
, if
range.contains(k)
, then get(k)
will return value
.
If range
is empty, then this is a no-op.
public void putAll(RangeMap<K,V> rangeMap)
RangeMap
rangeMap
into this range map (optional operation).public void clear()
RangeMap
public Range<K> span()
RangeMap
RangeMap
.public void remove(Range<K> rangeToRemove)
RangeMap
If !range.contains(k)
, get(k)
will return the same result
before and after a call to remove(range)
. If range.contains(k)
, then
after a call to remove(range)
, get(k)
will return null
.
public java.util.Map<Range<K>,V> asMapOfRanges()
RangeMap
Map<Range<K>, V>
.
Modifications to this range map are guaranteed to read through to the returned Map
.
The returned Map
iterates over entries in ascending order of the bounds of the
Range
entries.
It is guaranteed that no empty ranges will be in the returned Map
.
asMapOfRanges
in interface RangeMap<K extends java.lang.Comparable,V>
public java.util.Map<Range<K>,V> asDescendingMapOfRanges()
RangeMap
Map<Range<K>, V>
.
Modifications to this range map are guaranteed to read through to the returned Map
.
The returned Map
iterates over entries in descending order of the bounds of the
Range
entries.
It is guaranteed that no empty ranges will be in the returned Map
.
asDescendingMapOfRanges
in interface RangeMap<K extends java.lang.Comparable,V>
public RangeMap<K,V> subRangeMap(Range<K> subRange)
RangeMap
range
.
For example, if rangeMap
had the entries
[1, 5] => "foo", (6, 8) => "bar", (10, ∞) => "baz"
then rangeMap.subRangeMap(Range.open(3, 12))
would return a range map
with the entries (3, 5) => "foo", (6, 8) => "bar", (10, 12) => "baz"
.
The returned range map supports all optional operations that this range map supports,
except for asMapOfRanges().iterator().remove()
.
The returned range map will throw an IllegalArgumentException
on an attempt to
insert a range not enclosed by range
.
subRangeMap
in interface RangeMap<K extends java.lang.Comparable,V>
public boolean equals(@Nullable java.lang.Object o)
RangeMap
public int hashCode()
RangeMap
asMapOfRanges().hashCode()
.